我需要使用多个托管服务器更新yaml清单,并为每个托管服务器应用不同的变量。当前的yaml结构每个域只有一个管理服务器。
---
all:
hosts:
localhost:
ansible_connection: local
children:
targets:
hosts:
Domain1:
ansible_host: "www.example1.com"
admin_url: "t3://www.example1.com"
Domain2:
ansible_host: "www.example2.com"
admin_url: "t3://www.example2.com"
所以域1和2下的ansible_host是管理服务器。现在,我想在每个域下添加多个托管服务器,并且仍然可以根据需要灵活地为每个服务器(管理员和管理员)分配不同的变量值。
您应该深入了解yaml inventory documentation以了解它们的结构。恕我直言,他们对初学者的理解比历史上的ini库存要复杂一些。无论如何,你应该在开始之前对all the inventory concepts有一个很好的理解
您应该如何阅读当前的库存文件:
通用组all
声明:
localhost
的直接儿童主持人targets
的儿童组,有两个名为Domain1
和Domain2
的主人根据您的问题,我了解您希望将Domain1和Domain2视为组(顾名思义),而不是主机。
您可能需要重写您的库存,如下所示。
all:
children:
targets:
vars:
admin_url: "t3://{{ inventory_hostname }}"
children:
Domain1:
hosts:
www.example1.com:
www.example2.com:
www.yetanother.com:
Domain2:
hosts:
host1.domain2.com:
host2.domain2.com:
host3.domain2.com:
需要注意的事项:
targets
。由于所有管理地址都具有相同的格式,因此我声明了该组的var,它将用于使用其inventory_hostname
的每个主机(请参阅ansible magic variables)targets
小组现在有两个儿童组:Domain1
和Domain2
都宣布他们的东道主。希望这会帮助您入门。