在主机文件中定位 Ansible 嵌套子组
Target Ansible nested children groups in hosts file
我有一个包含嵌套子组的主机文件,类似于:
all:
children:
GROUP1:
children:
webservers:
hosts:
hostname1:
sqlservers:
hosts:
hostname2:
GROUP2:
children:
webservers:
hosts:
hostname3:
hostname4:
GROUP3:
children:
webservers:
hosts:
hostname5:
hostname6:
sqlservers:
hosts:
hostname7:
我可以成功定位第一层组,例如 GROUP1,但我希望定位嵌套组,例如 GROUP1>webservers 或 GROUP3>sqlservers。
我能找到的文档只针对第一层组。
有办法吗?
谢谢,
Ansible 实际上并不支持“嵌套组”。组名是
平面命名空间,并且只能在您的清单中定义一次。什么时候
您将组定义(如 webservers
)嵌套在另一个组中
(如 GROUP1
)它实际上只是 shorthand 使主持人成为会员
两组。
换句话说,当你这样写的时候:
all:
children:
GROUP1:
children:
webservers:
hosts:
hostname1:
sqlservers:
hosts:
hostname2:
GROUP2:
children:
webservers:
hosts:
hostname3:
hostname4:
与下面的平面布局相同:
all:
children:
GROUP1:
hosts:
hostname1:
hostname2:
GROUP2:
hosts:
hostname3:
hostname4:
webservers:
hosts:
hostname3:
hostname4:
sqlservers:
hosts:
hostname2:
请注意,webservers
组仅包含 hostname
和
hostname4
,因为您对 webservers
的第二个定义覆盖了
第一个.
我有一个包含嵌套子组的主机文件,类似于:
all:
children:
GROUP1:
children:
webservers:
hosts:
hostname1:
sqlservers:
hosts:
hostname2:
GROUP2:
children:
webservers:
hosts:
hostname3:
hostname4:
GROUP3:
children:
webservers:
hosts:
hostname5:
hostname6:
sqlservers:
hosts:
hostname7:
我可以成功定位第一层组,例如 GROUP1,但我希望定位嵌套组,例如 GROUP1>webservers 或 GROUP3>sqlservers。
我能找到的文档只针对第一层组。 有办法吗?
谢谢,
Ansible 实际上并不支持“嵌套组”。组名是
平面命名空间,并且只能在您的清单中定义一次。什么时候
您将组定义(如 webservers
)嵌套在另一个组中
(如 GROUP1
)它实际上只是 shorthand 使主持人成为会员
两组。
换句话说,当你这样写的时候:
all:
children:
GROUP1:
children:
webservers:
hosts:
hostname1:
sqlservers:
hosts:
hostname2:
GROUP2:
children:
webservers:
hosts:
hostname3:
hostname4:
与下面的平面布局相同:
all:
children:
GROUP1:
hosts:
hostname1:
hostname2:
GROUP2:
hosts:
hostname3:
hostname4:
webservers:
hosts:
hostname3:
hostname4:
sqlservers:
hosts:
hostname2:
请注意,webservers
组仅包含 hostname
和
hostname4
,因为您对 webservers
的第二个定义覆盖了
第一个.