Ansible - запуск playbook на определенной группе хостов с тем же соглашением об именах в инвентаре
Допустим, у меня есть этот тип инвентаря, который состоит из похожих имен для подгрупп в основной группе, но с разными ip сервера в конце. Имена похожи, потому что это соглашение об именах, которое я хотел бы использовать, и я хочу, чтобы в конце были отличны только ip сервера.
[maingroup]
group1
group2
[group1]
subgroup1
subgroup2
subgroup3
[group2]
subgroup1
subgroup2
subgroup3
[subgroup1]
server1
server2
server3
[subgroup2]
server4
server5
server6
Я хотел бы иметь скрипт Python/ Shell, который принимает некоторые параметры, например:
python test.py maingroup group1 subgroup1
затем запустите ответную роль на определенном хосте при передаче vars(не уверен, правильно ли):
ansible-playbook -i host.yml --extra-vars "variable_maingroup=maingroup variable_group=group variable_subgroup=subgroup"
Я хотел бы убедиться, что я запускаю ansible только на серверах с таким путем: maingroup>group1>subgroup1 и передаю его моей роли ansible в качестве хостов для запуска.
Поэтому мой вопрос заключается в том, как я мог бы настроить таргетинг только на серверы в подгруппе 1, которая находится под maingroup.group1, такой же, как порядок параметров, передаваемых в скрипт, а не в группу 2, и что мне нужно изменить в моей задаче, чтобы передать этот хост как вар?
Я знаю, что могу передать хост как дополнительную переменную, но как я смогу достичь этой конкретной структуры?
имел в виду что-то вроде этого:
- hosts: {{ hostvars[groups['maingroup']['group1']['subgroup1'] }}
Большое спасибо!
1 ответ
После некоторых копаний я нашел ответ на свой вопрос, так что это можно сделать с помощью шаблонов.
Внутри задача / роль:
- hosts: "{{subgroup}}:&{{group}}:&{{maingroup}}"
Команда:
ansible-playbook -i hosts test.yml --extra-vars "maingroup=maingroup group=group1 subgroup=subgroup1"
Это будет выполняться только в подгруппе, которая входит в конкретную группу и конкретную основную группу
Как и в команде: она будет работать только в подгруппе 1, которая входит в группу 1