在hosts.yml中,我们可以声明这样的变量:
group1_hosts:
hosts:
host1:
host2:
var1: var1val1
var2: var2val2
然后我们在两个主机上都有这个变量——多个键可以有相同的值。
是否可以用类似的方式在group_vars/all.yml
中声明变量:
variables:
host1:
host2:
var1: var1val1
host3:
host4:
var1: var1val2
然后像-{{ variables[inventory_hostname].var1 }}
一样访问它们
如果这个想法不清楚,我希望避免在许多文件中为每个环境主机设置两个变量。相反,我希望在group_vars
中声明它,这样,如果某些主机具有相同的配置,我就不必编辑多个文件。
我认为这样写是可能的:
variables:
host1:
var1: var1val1
host2:
var1: var1val1
host3:
var1: var1val2
host4:
var1: var1val2
但这也不是一个方便的解决方案。
ansible中有没有这样的方法来存储变量?
Q:">避免在许多文件中为每个环境主机设置两个变量。相反,我希望在group_vars中声明它,这样,如果某些主机具有相同的配置,我就不必编辑多个文件">
A: 例如,给定库存
shell> cat hosts
[group1_hosts]
host1
host2
将变量放入group_vars/group1_hosts.yml
shell> cat group_vars/group1_hosts.yml
var1: var1val1
var2: var2val2
然后是战术手册
- hosts: group1_hosts
tasks:
- debug:
var: var1
给出
ok: [host1] =>
var1: var1val1
ok: [host2] =>
var1: var1val1
请参阅变量优先级:变量应该放在哪里?如何覆盖group_vars。