如何以无库存Yaml格式在域下订购多个托管服务器

时间:2019-03-27 09:44:21

标签: ansible ini ansible-inventory

我需要使用多个托管服务器来更新Yaml广告资源,并对每个服务器应用不同的变量。当前的yaml结构每个域只有一个管理服务器。

MaterialApp

因此域1和2下的ansible_host是管理服务器。现在,我想在每个域下添加多个托管服务器,并且仍然可以根据需要灵活地为每个服务器(管理员和托管)分配不同的变量值。

1 个答案:

答案 0 :(得分:1)

您应该深入了解yaml inventory documentation,以了解其结构。恕我直言,对于初学者来说,它们比历史上的库存更复杂。无论如何,您应该先对all the inventory concepts有所了解

您应如何阅读当前库存文件:

通用组all声明:

  • 一个直接子托管人,名为localhost
  • 一个名为targets的孩子组,其中两个主机分别名为Domain1Domain2

根据您的问题,我了解您希望将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。由于所有管理员地址的格式都相同,因此我为该组声明了一个变量,该变量将用于使用其inventory_hostname(请参阅ansible magic variables)的每个主机
  • 您的targets组现在有两个子组:Domain1Domain2都声明了其宿主。
  • 由于我们现在使用真实名称声明主机,因此无需将ansible_host设置为其他值,因此到目前为止,不需要主机vars。

希望这会帮助您入门。