我的ansible清单文件中有[all:vars]
的定义如下:
[all:vars]
ansible_shell_type=bash
ansible_user=certain_user
ansible_ssh_common_args="-o ConnectionAttempts=10"
我计划将这些变量移动到ansible.cfg
以设置所有主机的默认值。它只是以类似的方式工作还是有任何情况需要考虑?
还有哪些其他方法可以从清单文件中删除[all:vars]
?
答案 0 :(得分:8)
考虑将变量移动到/ group_vars / all以支持的方式实现相同。
答案 1 :(得分:3)
ansible.cfg
是一个配置文件,而不是库存,你不能把变量放在那里。
[all:vars]
是一种语法,用于为库存文件中的组(本例中为特殊组all
)定义组变量。
如果您想从主库存文件中拆分变量定义(顺便说一下,这是首选做法!),您可能需要阅读本章:Splitting Out Host and Group Specific Data。
摘录:
除了将变量直接存储在库存文件中之外,主机和组变量还可以存储在相对于库存文件的单个文件中
假设库存文件路径为:
/etc/ansible/hosts
如果主机名为'foosball',并且在'raleigh'和'webservers'组中,则以下位置的YAML文件中的变量将可供主机使用:
/etc/ansible/group_vars/raleigh # can optionally end in '.yml', '.yaml', or '.json' /etc/ansible/group_vars/webservers /etc/ansible/host_vars/foosball
答案 2 :(得分:2)
当然,您可以在ansible.cfg
中定义这些值,它们只有不同的名称,因此请事先参考the manual:
ansible_shell_type
可以在ansible.cfg
executable
ansible_user
为remote_user
ansible_ssh_common_args
为ssh_args
配置文件中设置的值将应用于所有主机,除非被特定设置覆盖。