如何以 ansible inventory yaml 格式在域下订购多个托管服务器
How to order multiple managed servers under a domain in ansible inventory yaml format
我需要更新具有多个托管服务器的 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 to understand how they are structured. IMHO they are a little more complex to understand for starters than the historic ini inventories. You should have a good understanding of 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:
注意事项:
- 我删除了对 localhost 的引用。默认情况下始终可用。
- 我保留了你的顶级组
targets
。由于所有管理员地址都具有相同的格式,我为该组声明了一个 var,它将用于每个使用其 inventory_hostname
的主机(参见 ansible magic variables)
- 您的
targets
组现在有两个子组:Domain1
和 Domain2
都声明了它们的主机。
- 由于我们现在使用真实名称声明主机,因此无需将 ansible_host 设置为不同的值,因此目前不需要主机变量。
希望这对您入门有所帮助。
我需要更新具有多个托管服务器的 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 to understand how they are structured. IMHO they are a little more complex to understand for starters than the historic ini inventories. You should have a good understanding of 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:
注意事项:
- 我删除了对 localhost 的引用。默认情况下始终可用。
- 我保留了你的顶级组
targets
。由于所有管理员地址都具有相同的格式,我为该组声明了一个 var,它将用于每个使用其inventory_hostname
的主机(参见 ansible magic variables) - 您的
targets
组现在有两个子组:Domain1
和Domain2
都声明了它们的主机。 - 由于我们现在使用真实名称声明主机,因此无需将 ansible_host 设置为不同的值,因此目前不需要主机变量。
希望这对您入门有所帮助。