Вы должны глубоко взглянуть на документацию инвентаря 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 в другое значение, поэтому хосты отсутствуют.Пока нужны переменные.
Надеюсь, это поможет вам начать работу.