У меня есть playbook, который нужно запустить для всего моего инвентаря, со списком имен хостов в качестве дополнительной переменной (target_hosts
).
На всех хостах в target_hosts
определена group_id
переменная хоста. Я использую весь инвентарь, потому что некоторые вспомогательные хосты, которые соответствуют group_id
var, нуждаются в конфигурации каждой группы для соответствия в одном разделе.
Часто с хостами в списке target_hosts
будет несколько group_id
значений. Мне нужно выбрать правильную группу инвентаризации вспомогательных хостов и импортировать / запустить playbook для настройки обоих наборов серверов на полпути через основную playbook.
Вот чем я сейчас занимаюсь:
include_playbook: group-configure.yaml
vars:
src_hosts: "group-{{ group_id }}-ancillary-1"
dest_hosts: "{{ target_hosts }}"
В настоящее время мне приходится вручную разделять target_hosts
на group_id
вручную, а затем запускать основную книгу воспроизведения по одному разу для каждого. Это несет массу ненужных накладных расходов.
Что я действительно хочу выполнить, так это:
for each group of hosts from `target_hosts` with the same `group_id` hostvar:
import and run group-configure.yaml with:
src_hosts: "ancillary-{{ group_id }}"
target_hosts: restricted to those with that value of `group_id`'
Как я могу это сделать? Если нынешний способ ее структурирования не работает, какой альтернативный подход лучше всего?