Fork me on GitHub

Ansible参数配置文件ansible.cfg

Ansible默认安装好后有一个配置文件/etc/ansible/ansible.cfg,该配置文件中定义了ansible的主机的默认配置部分,如默认是否需要输入密码、是否开启sudo认证、action_plugins插件的位置、hosts主机组的位置、是否开启log功能、默认端口、key文件位置等等。

Ansible的一些的设置可以通过配置文件完成.在大多数场景下默认的配置就能满足大多数用户的需求,在一些特殊场景下,用户还是需要自行修改这些配置文件。

用户可以修改一下配置文件来修改设置,他们的被读取的顺序如下:

1
2
3
4
* ANSIBLE_CONFIG (一个环境变量)
* ansible.cfg (位于当前目录中)
* .ansible.cfg (位于家目录中)
* /etc/ansible/ansible.cfg

Ansible 将会按以上顺序逐个查询这些文件,直到找到一个为止,并且使用第一个寻找到个配置文件的配置,这些配置将不会被叠加.

ask_pass

  • 这个可以控制,Ansible 剧本playbook 是否会自动默认弹出弹出密码.默认为no::

    ask_pass=True

如果使用SSH 密钥匙做身份认证.可能需要修改这一参数

ask_sudo_pass

类似 ask_pass,用来控制Ansible playbook 在执行sudo之前是否询问sudo密码.默认为no:

1
ask_sudo_pass=True

如果用户使用的系统平台开启了sudo 密码的话,应该开绿这一参数

forks

这个选项设置在与主机通信时的默认并行进程数.从Ansible 1.3开始,fork数量默认自动设置为主机数量或者潜在的主机数量, 这将直接控制有多少网络资源活着cpu可以被使用.很多用户把这个设置为50,有些设置为500或者更多.如果你有很多的主机, 高数值将会使得跨主机行为变快.默认值比较保守:

1
_forks=5

gathering

1.6版本中的新特性,这个设置控制默认facts收集(远程系统变量). 默认值为’implicit’, 每一次play,facts都会被手机,除非设置’gather_facts: False’. 选项‘explicit’正好相反,facts不会被收集,直到play中需要. ‘smart’选项意思是,没有facts的新hosts将不会被扫描, 但是如果同样一个主机,在不同的plays里面被记录地址,在playbook运行中将不会通信.这个选项当有需求节省fact收集时比较有用.

inventory

这个事默认库文件位置,脚本,或者存放可通信主机的目录:

1
inventory = /etc/ansible/hosts

log_path

如果出现在ansible.cfg文件中.Ansible 将会在选定的位置登陆执行信息.请留意用户运行的Ansible对于logfile有权限:

1
log_path=/var/log/ansible.log

这个特性不是默认开启的.如果不设置,ansible将会吧模块加载纪录在系统日志系统中.不包含用密码.

对于需要了解更多日志系统的企业及用户,你也许对:doc:tower 感兴趣.

module_name

这个是/usr/bin/ansible的默认模块名(-m). 默认是’command’模块. 之前提到过,command模块不支持shell变量,管道,配额. 所以也许你希望把这个参数改为’shell’:

1
module_name = command

poll_interval

对于Ansible中的异步任务(详见 异步操作和轮询), 这个是设置定义,当具体的poll interval 没有定义时,多少时间回查一下这些任务的状态, 默认值是一个折中选择15秒钟.这个时间是个回查频率和任务完成叫回频率和当任务完成时的回转频率的这种:

1
poll_interval=15

private_key_file

如果你是用pem密钥文件而不是SSH 客户端或秘密啊认证的话,你可以设置这里的默认值,来避免每一次提醒设置密钥文件位置–ansible-private-keyfile:

1
private_key_file=/path/to/file.pem

remote_port

这个设置是你系统默认的远程SSH端口,如果不指定,默认为22号端口:

1
remote_port = 22

remote_tmp

Ansible 通过远程传输模块到远程主机,然后远程执行,执行后在清理现场.在有些场景下,你也许想使用默认路径希望像更换补丁一样使用, 这时候你可以使用这个选项.:

1
remote_tmp = $HOME/.ansible/tmp

默认路径是在用户家目录下属的目录.Ansible 会在这个目录中使用一个随机的文件夹名称.

remote_user

这是个ansible使用/usr/bin/ansible-playbook链接的默认用户名. 注意如果不指定,/usr/bin/ansible默认使用当前用户名称:

1
remote_user = root

roles_path

roles 路径指的是’roles/’下的额外目录,用于playbook搜索Ansible roles.比如, 如果我们有个用于common roles源代码控制仓库和一个不同的 playbooks仓库,你也许会建立一个惯例去在 /opt/mysite/roles 里面查找roles.:

1
roles_path = /opt/mysite/roles

多余的路径可以用冒号分隔,类似于其他path字符串:

1
roles_path = /opt/mysite/roles:/opt/othersite/roles

Roles将会在playbook目录中开始搜索.如果role没有找到,这个参数指定了其它可能的搜索路径.

sudo_user

这个是sudo使用的默认用户,如果–sudo-user 没有特指或者’sudo_user’ 在Ansible playbooks中没有特指,在大多数的逻辑中 默认为: ‘root’

1
sudo_user=root

timeout

这个事默认SSH链接尝试超市时间:

1
timeout = 10

vault_password_file

New in version 1.7.

这个用来设置密码文件,也可以通过命令行指定–vault-password-file:

1
vault_password_file = /path/to/vault_password_file

在1.7版本中,这个文件也可以称为一个脚本的形式.如果你使用脚本而不是单纯文件的话,请确保它可以执行并且密码可以在标准输出上打印出来.如果你的脚本需要提示请求数据,请求将会发到标准错误输出中.

record_host_keys

默认设置会记录并验证通过在用户hostfile中新发现的的主机(如果host key checking 被激活的话). 这个选项在有很多主机的时候将会性能很差.在 这种情况下,建议使用SSH传输代替. 当设置为False时, 性能将会提升,在hostkey checking 被禁用时候,建议使用.:

1
record_host_keys=True

host_key_checking

如果有台被管节点重新安装系统并在known_hosts中有了与之前不同的密钥信息,就会提示一个密钥不匹配的错误信息,直到被纠正为止,在使用Ansible时,如果有台被管理节点没有在known_hosts中被初始化,将会在使用Ansible或定时执行Ansible时提示对key信息的确认。如果你不想出现这种情况,并且你明白禁用此项行为的含义,只要修改该参数为False即可

1
host_key_checking=True
好记性不如烂笔头,生命不息,学习不止!

分享