强制 ansible 对库存组的每一行应用更改

Force ansible to apply changes on each lines of an inventory group

我有一台裸机服务器,我想在这台服务器上安装多个服务。

我的库存看起来像那样

[Mygroup]
Server port_service=9990 service_name="service1"
Server port_service=9991 service_name="service2"

当我启动我的 ansible 作业时,只安装了服务 2,因为我的组的每一行都有相同的服务器。有没有办法强制ansible占用一个组的所有线路?

我不想为每个服务创建一个组

希望我没听错,但这应该可以解决问题。

https://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html

问候

哈利

问:"有办法强制Ansible取一个组的所有行吗?"

A:没有,没有。在一个组中,主机应该是唯一的。如果有多个同名主机,最后一个将被占用。

将变量放在一行中,例如

[Mygroup]
Server port_services="[9990, 9991]" service_names="['service1', 'service2']"

(并更改代码)。


参见How to build your inventory。还有很多其他选项,例如

[Mygroup]
Server

[Mygroup:vars]
port_services="[9990, 9991]"
service_names="['service1', 'service2']"

另一个解决方案是使用别名。

这个解决方案很适合我

[Mygroup]
service_1 ansible_host=Server port_service=9990 service_name="service1"
service_2 ansible_host=Server port_service=9991 service_name="service2"