在Ansible中为所有主机定义默认变量的正确方法

Aki*_*kif 7 ansible ansible-inventory

[all:vars]我的ansible清单文件中有一个定义如下:

[all:vars]
ansible_shell_type=bash
ansible_user=certain_user
ansible_ssh_common_args="-o ConnectionAttempts=10"
Run Code Online (Sandbox Code Playgroud)

我计划将这些变量移动到ansible.cfg为所有主机设置默认值.它会以类似的方式工作还是有任何情况需要考虑?还有哪些其他替代品可以[all:vars]从库存文件中删除?

Kon*_*rov 11

ansible.cfg 是一个配置文件而不是库存,你不能把变量放在那里。

[all:vars]是为all库存文件中的组(在本例中为特殊组)定义组变量的语法。

如果您想从主清单文件中分离出变量定义(顺便说一下,这是首选做法!),您可能需要阅读本章:分离主机和组特定数据

摘抄:

除了直接在清单文件中存储变量外,主机和组变量可以存储在相对于清单文件的单独文件中

假设库存文件路径是:

/etc/ansible/hosts
Run Code Online (Sandbox Code Playgroud)

如果主机名为“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
Run Code Online (Sandbox Code Playgroud)


Luc*_*nar 9

考虑将变量移动到/ group_vars/all以支持的方式实现相同.