本节书摘来自华章出版社《ansible权威指南 》一书中的第2章,第2.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区“华章计算机”公众号查看。
第1章介绍了ansible的功能作用、通信发展史、基础的安装部署及处理ansible安装问题所需的python多环境管理工具pyenv和virutalenv。在前期基本工作准备妥当的基础上,本章进一步深入学习ansible的基础元素,会相继接触ansible目录结构简介、ansible系列命令、ansible inventory配置规范、ansible模式匹配规则等,其中部分内容,诸如inventory、ansible-playbook等在后续涉及章节会更深入介绍。本章主要是为大家呈现ansible及系列命令的基础入门介绍,
所介绍的内容相互之间没有紧密关系,可选择性地阅读感兴趣章节。
2.1 ansible目录结构介绍
ansible是开源工具,整个开发过程或二次开发均遵循gpl协议,所以所有源码均可见。作为一款日常工作所需的核心软件,我们有必要知道其目录分布及各目录功能。通过如下命令我们可以获取ansible所有文件存放目录:
该命令输出内容较多,大致分为如下几类:
整体的目录概要可参考如图2-1所示的ansible目录树结构。

其中,如下目录运维常要配置,需熟练掌握。
1)配置文件目录/etc/ansible/,主要功能为:inventory主机信息配置、ansible工具功能配置等。所有ansible的配置均存放在该目录下,运维日常的所有配置类操作也均基于此目录进行。
2)执行文件目录/usr/bin/,主要功能为:ansible系列命令默认存放目录。ansible所有的可执行文件均存放在该目录下。
在/usr/lib/pythonxxx/site-packages/下,该目录是系统当前默认的python路径,因为ansible是基于python编写的,所以ansible的所有lib库文件和模块文件也均存放于该目录下。希望了解ansible源码的话可至该目录下查看其工作原理,当然也可至github上下载历史或最新ansible版本。
2.2 ansible配置文件解析
inventory用于定义ansible的主机列表配置,ansible的自身配置文件只有一个,即ansible.cfg,ansible安装好后它默认存放于/etc/ansible/目录下。ansible.cfg配置文件可以存在于多个地方,ansible读取配置文件的顺序依次是当前命令执行目录→用户家目录下的.ansible.cfg→/etc/ansible.cfg,先找到哪个就使用哪个的配置。其ansible.cfg配置的所有内容均可在命令行通过参数的形式传递或定义在playbooks中。
配置文件ansible.cfg约有350行语句,大多数为注释行默认配置项。该文件遵循ini格式,分为如下几类配置。
该类配置下定义常规的连接类配置,如inventory、library、remote_tmp、local_tmp、forks、poll_interval、sudo_user、ask_sudo_pass、ask_pass、transport、remote_port等。
[defaults]
上述是日常可能用到的配置,这些多数保持默认即可。
(2)[privilege_escalation]
出于安全角度考虑,部分公司不希望直接以root的高级管理员权限直接部署应用,往往会开放普通用户权限并给予sudo的权限,该部分配置主要针对sudo用户提权的配置。
上面尽可能全地介绍了运维工作中可能需要修改的配置选项,除了在关闭首次连接提示(host_key_checking = false)或提速调整([accelerate]区域块配置调整)时可能会稍做调整,其中绝大多数选项默认即可,ansible安装好后无需任何改动即可使用。