假设我有这种类型的库存,其中包含主组下子组的相似名称,但最后具有不同的服务器 IP。名称是相似的,因为那是我想使用的命名约定,我只希望最后的服务器 ip 不同。
[maingroup]
group1
group2
[group1]
subgroup1
subgroup2
subgroup3
[group2]
subgroup1
subgroup2
subgroup3
[subgroup1]
server1
server2
server3
[subgroup2]
server4
server5
server6
我想要一个接受一些参数的python/shell脚本,例如:
python test.py maingroup group1 subgroup1
然后在传递 vars 时在特定主机上运行 ansible 角色(不确定是否正确):
ansible-playbook -i host.yml --extra-vars "variable_maingroup=maingroup variable_group=group variable_subgroup=subgroup"
我想确保我只在具有以下路径的服务器上运行 ansible:maingroup>group1>subgroup1 并将其作为要运行的主机传递给我的 ansible 角色。
所以我的问题是,我如何才能仅针对 subgroup1 中的服务器,该服务器位于 maingroup.group1 下,与传递给脚本而不是 group2 的参数顺序相同作为变量?
我知道我可以将主机作为一个额外的变量传递,但我如何能够实现这个特定的结构?
有这样的想法:
- hosts: {{ hostvars[groups['maingroup']['group1']['subgroup1'] }}
非常感谢!