本节书摘来自华章出版社《ansible权威指南》一书中的第2章,第2.2节,作者 李松涛 魏 巍 甘 捷 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.2 ansible配置文件解析
inventory用于定义ansible的主机列表配置,ansible的自身配置文件只有一个,即ansible.cfg,ansible安装好后它默认存放于etcansible目录下。ansible.cfg配置文件可以存在于多个地方,ansible读取配置文件的顺序依次是当前命令执行目录→用户家目录下的.ansible.cfg→etcansible.cfg,先找到哪个就使用哪个的配置。其ansible.cfg配置的所有内容均可在命令行通过参数的形式传递或定义在playbooks中。
配置文件ansible.cfg约有350行语句,大多数为注释行默认配置项。该文件遵循ini格式,分为如下几类配置。
(1)[defaults]
该类配置下定义常规的连接类配置,如inventory、library、remote_tmp、local_tmp、forks、poll_interval、sudo_user、ask_sudo_pass、ask_pass、transport、remote_port等。
[defaults]
# inventory =
etcansiblehosts # 定义inventory
# library =
usrsharemy_modules # 自定义lib库存放目录
# remote_tmp =
$home.ansibletmp # 临时文件远程主机存放目录
# local_tmp =
$home.ansibletmp # 临时文件本地存放目录
# forks = 5 # 默认开启的并发数
# poll_interval
= 15 # 默认轮询时间间隔
# sudo_user = root #
默认sudo用户
# ask_sudo_pass
= true # 是否需要sudo密码
# ask_pass = true #
是否需要密码
# roles_path =
etcansibleroles # 默认下载的roles存放的目录
#
host_key_checking = false # 首次连接是否需要检查key认证,建议设为false
# timeout = 10 # 默认超时时间
# timeout = 10 # 如没有指定用户,默认使用的远程连接用户
# log_path = varlogansible.log # 执行日志存放目录
# module_name =
command # 默认执行的模块
# action_plugins
= usrshareansiblepluginsaction # action插件的存放目录
callback_plugins = usrshareansiblepluginscallback # callback插件的存放目录
connection_plugins = usrshareansiblepluginsconnection # connection插件的
#
存放目录
# lookup_plugins
= usrshareansiblepluginslookup # lookup插件的存放目录
# vars_plugins =
usrshareansiblepluginsvars # vars插件的存放目录
# filter_plugins
= usrshareansiblepluginsfilter # filter插件的存放目录
# test_plugins =
usrshareansiblepluginstest # test插件的存放目录
strategy_plugins = usrshareansiblepluginsstrategy # strategy插件的存放目录
# fact_caching =
memory # getfact缓存的主机信息存放方式
retry_files_enabled = false
retry_files_save_path = ~.ansible-retry #
错误重启文件存放目录
…
上述是日常可能用到的配置,这些多数保持默认即可。
(2)[privilege_escalation]
出于安全角度考虑,部分公司不希望直接以root的高级管理员权限直接部署应用,往往会开放普通用户权限并给予sudo的权限,该部分配置主要针对sudo用户提权的配置。
[privilege_escalation]
# become=true # 是否sudo
become_method=sudo # sudo方式
become_user=root # sudo后变为root用户
become_ask_pass=false # sudo后是否验证密码
(3)[paramiko_connection]
定义paramiko_connection配置,该部分功能不常用,了解即可。
[paramiko_connection] # 该配置不常用到
record_host_keys=false # 不记录新主机的key以提升效率
# pty=false # 禁用sudo功能
(4)[ssh_connection]
ansible默认使用ssh协议连接对端主机,该部署是主要是ssh连接的一些配置,但配置项较少,多数默认即可。
[ssh_connection]
# pipelining =
false # 管道加速功能,需配合requiretty使用方可生效
(5)[accelerate]
ansible连接加速相关配置。因为有部分使用者不满意ansible的执行速度,所以ansible在连接和执行速度方面也在不断地进行优化,该配置项在提升ansibile连接速度时会涉及,多数保持默认即可。
[accelerate]
accelerate_port = 5099 # 加速连接端口
accelerate_timeout = 30 # 命令执行超时时间,单位秒
accelerate_connect_timeout = 5.0 # 连接超时时间,单位秒
accelerate_daemon_timeout = 30 # 上一个活动连接的时间,单位分钟
accelerate_multi_key = yes
(6)[selinux]
关于selinux的相关配置几乎不会涉及,保持默认配置即可。
[selinux]
libvirt_lxc_noseclabel = yes
(7)[colors]
ansible对于输出结果的颜色也进行了详尽的定义且可配置,该选项对日常功能应用影响不大,几乎不用修改,保持默认即可。
[colors]
# highlight =
white
# verbose = blue
# warn = bright
purple
# error = red
# debug = dark
gray
# deprecate =
# skip = cyan
# unreachable =
red
# ok = green
# changed =
yellow
# diff_add =
green
# diff_remove =
# diff_lines =
cyan
上面尽可能全地介绍了运维工作中可能需要修改的配置选项,除了在关闭首次连接提示(host_key_checking = false)或提速调整([accelerate]区域块配置调整)时可能会稍做调整,其中绝大多数选项默认即可,ansible安装好后无需任何改动即可使用。