2017-09-13 54 views
2
所有主机的默认变量

有一个在我的ansible库存文件的[all:vars]定义如下:正确的方式来定义Ansible

[all:vars] 
ansible_shell_type=bash 
ansible_user=certain_user 
ansible_ssh_common_args="-o ConnectionAttempts=10" 

我打算这样变量进入ansible.cfg来设置所有主机的默认值。它是以相似的方式工作,还是有任何情况需要考虑? 还有什么其他选择可以从库存文件中删除[all:vars]

回答

2

当然你也可以在ansible.cfg定义这些价值观,他们只是有不同的名称,因此请参考the manual事先:

配置文件中设置的值将应用于所有主机,除非被特定设置覆盖。

3

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

3

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

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

如果您想从主库存文件中分出变量定义(顺便说一下,这是首选惯例!),您可能需要阅读本章:Splitting Out Host and Group Specific Data

摘录:

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

假设清单文件路径的文件是:

/etc/ansible/hosts 

如果主机被命名为“桌上足球”,并在集团“罗利”和“网络服务器”,在以下地点YAML文件变量将被制成用T Ø主机:

/etc/ansible/group_vars/raleigh # can optionally end in '.yml', '.yaml', or '.json' 
/etc/ansible/group_vars/webservers 
/etc/ansible/host_vars/foosball 
+0

这就是为什么对同一个问题可能有很多不同的答案的原因。谁知道OP的主要目标是什么?我看到关于一般组变量的问题,你会看到有关可变配置变量的问题。提高你的答案。 –