有没有一种方法可以像其他文件中的hosts.yml那样用多个键访问变量



在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

最新更新