Как заказать несколько управляемых серверов в домене в формате yaml для инвентаризации - PullRequest
1 голос
/ 27 марта 2019

Мне нужно обновить инвентарь 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"

, поэтому ansible_host в домене 1 и 2 являются серверами администратора.Теперь я хотел бы добавить несколько управляемых серверов в каждом домене и при этом иметь возможность назначать каждому серверу (как административному, так и управляемому) различные значения переменных, если это необходимо.

1 Ответ

1 голос
/ 27 марта 2019

Вы должны глубоко взглянуть на документацию инвентаря yaml , чтобы понять, как они структурированы.ИМХО, для начала они немного сложнее для понимания, чем исторические первоначальные списки.Вы должны хорошо понимать все концепции инвентаря , прежде чем начать все равно

Как читать текущий файл инвентаризации:

Универсальная группа 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.Поскольку все адреса администраторов имеют одинаковый формат, я объявил переменную для этой группы, которая будет использоваться для каждого хоста, используя inventory_hostname (см. переменные магического ответа )
  • Ваш targetsВ группе теперь есть две дочерние группы: Domain1 и Domain2, которые объявляют свои хосты.
  • Поскольку теперь мы объявляем хосты с их реальными именами, нет необходимости устанавливать ansible_host в другое значение, поэтому хосты отсутствуют.Пока нужны переменные.

Надеюсь, это поможет вам начать работу.

...