配置文件
建议使用~/.ansible.cfg作为配置文件使用,这样就可以实现每个用户都有自己独自的配置文件,不污染其它用户正常使用Ansible,同时也方便进行选项配置。
- 优先级说明
- ANSIBLE_CFG:首先,Ansible会检查环境变量,及这个环境变量指向的配置文件
- ./ansible.cfg:其次,检查当前目录下的ansible.cfg配置文件
- ~/.ansible.cfg:再次,检查当前用户家目录下的 .ansible.cfg 配置文件
- /etc/ansible/ansible.cfg:最后,检查安装Ansible自动生产的配置文件
-
配置项
defaults配置
配置项 说明 默认值 inventory ansible inventory文件路径 /etc/ansible/hosts library ansible模块文件路径 /usr/share/my_modules/ remote_tmp ansible远程主机脚本临时存放目录 ~/.ansible/tmp local_tmp ansible管理节点脚本临时存放目录 ~/.ansible/tmp forks ansible执行并发数 5 poll_interval ansible异步任务查询间隔 15 sudo_user ansible sudo用户 root ask_sudo_pass 运行ansible是否提示输入sudo密码 True ask_pass 运行ansible是否提示输入密码 True transport ansible远程传输模式 smart remote_port 远程主机SSH端口 22 module_lang ansible模块运行默认语言环境 C gathering facts信息收集开关定义 smart roles_path ansible role存放路径 /etc/ansible/roles timeout ansible SSH连接超时时间 10 remote_user ansible远程认证用户 root log_path ansible日志记录文件 /var/log/ansible.log module_name ansible默认执行模块 command executable ansible命令执行shell /bin/sh hash_behaviour ansible主机变量重复处理方式 replace private_role_vars 默认情况下,角色中的变量将在全局变量范围中可见。 为了防止这种情况,可以启用以下选项,只有tasks的任务和handlers得任务可以看到角色变量 yes vault_password_file 指定vault密码文件路径 无 ansible_managed 定义的一个Jinja2变量,可以插入到Ansible配置模版系统生成的文件中 Ansible managed display_skipped_hosts 开启显示跳过的主机 True error_on_undefined_vars 开启错误,或者没有定义的变量 False action_plugins ansible action插件路径 无 cache_plugins ansible cache插件路径 无 callback_plugins ansible callback插件路径 无 connection_plugins ansible connection插件路径 无 lookup_plugins ansible lookup插件路径 无 inventory_plugins ansible inventory插件路径 无 vars_plugins ansible vars插件路径 无 filter_plugins ansible filter插件路径 无 terminal_plugins ansible terminal插件路径 无 strategy_plugins ansible strategy插件路径 无 fact_caching 定义ansible facts缓存方式 memory fact_caching_connection 定义ansible facts缓存路径 无 privilege_escalation配置
配置项 说明 默认值 become 是否开启become模式 True become_method 定义become方式 sudo become_user 定义become方式 root become_ask_pass 是否定义become提示密码 False
目录标准化
/opt/ansible/playbook # playbook文件纳入本地git仓库管理
/opt/ansible/server/ansible-2.7.10 # ansible源码安装目录
/root/.ansible.cfg /opt/ansible/playbook/inventory # 主机清单文件、ansible配置文件
环境变量配置
# /etc/profile
export PATH=$PATH:/opt/ansible/server/ansible-2.7.10/bin
source /etc/profile
常见文件存放位置
文件 | 说明 | 默认值 |
---|---|---|
ansible.cfg | 用户家目录下的 .ansible.cfg | /etc/ansible/ansible.cfg |
group_vars和host_vars | 一般和inventory文件存在一个目录内 | /etc/ansible/{group_vars,host_vars} |
host | 配置文件inventory参数配置 | /etc/ansible/hosts |
roles_path | roles存放目录,一般优先查找playbook当前目录下roles,即使配置了roles_path | /etc/ansible/roles(可配置多个,以:隔开) |
配置文件示意
[defaults]
#主机清单配置
inventory = /opt/ansible/playbook/inventory
#插件库目录
library = /opt/ansible/playbook/module/ansible
#远端临时目录,ansible执行模块会将相应信息scp到远端临时目录
remote_tmp = $HOME/.ansible/tmp
#本地临时目录
local_tmp = $HOME/.ansible/tmp
#并行数,默认是5
forks = 20
#执行远程ssh的用户
remote_user = opsadmin
#通信机制,默认为smart,如果本地系统支持 ControlPersist技术的话,将会使用(基于OpenSSH)‘ssh’,如果不支持讲使用‘paramiko’
transport = smart
#默认为implicit每次都收集;smart表示如果facts有缓存,则使用缓存数据.
gathering = smart
#role目录,默认优先查找playbook同级的role目录
roles_path = /etc/ansible/roles
#日志路径
log_path = /var/log/ansible.log
#默认执行模块名
module_name = command
#playbook中role定义的var,只能在本role中运行
private_role_vars = yes
#执行任务不会显示skip状态主机信息
display_skipped_hosts = True
#如果ansible引入未定义变量,会报错
error_on_undefined_vars = True
#ssh key目录
private_key_file = /root/.ssh/opsadmin-id_rsa
#不开启ssh过程主机key检查
host_key_checking = False
#超时时间
timeout = 60
#fact缓存时间
fact_caching_timeout = 86400
#fact缓存方式,支持json文件、redis等(目前redis只能部署在控制机)
fact_caching = jsonfile
#fact缓存目录
fact_caching_connection = $HOME/.ansible/tmp
[privilege_escalation]
#支持sudo
become=True
become_method=sudo
#sudo用户
become_user=root
#sudo命令是否输入密码
become_ask_pass=False
[ssh_connection]
#开启ssh连接持久化
ssh_args = -C -o ControlMaster=auto -o ControlPersist=5m
control_path_dir = $HOME/.ansible/cp
control_path = %(directory)s/%%h-%%r
#开启pipelining:所有的任务都会放在一个管道执行,减少了ssh连接建立次数
pipelining = True
#默认临时文件通过sftp进行传递,如果没stfp,采用scp进行传递
#scp_if_ssh=False