Как иметь несколько имен хостов в одном шаблоне?
Я хочу создать файл, который является одинаковым на двух хостах и содержит оба имени хоста, например:
resource r0 {
on host01 {
device /dev/drbd0;
}
on host02 {
device /dev/drbd0;
}
}
Я пытался добиться этого с помощью шаблона, такого как следующее:
resource r0 {
on {{ hostvars[groups['hosts'][0]]['ansible_nodename'] }} {
device /dev/drbd0;
}
on {{ hostvars[groups['hosts'][1]]['ansible_nodename'] }} {
device /dev/drbd0;
}
}
Это работает для первой переменной, но в списке нет второго элемента, поэтому вторая переменная неизвестна.
Как получить список хостов, чтобы я мог выбрать каждый хост по отдельности из списка?
Изменить: соответствующий бит инвентаря
[hosts]
host01
host02
Редактировать:
Мой ответ ниже работает, если мне просто нужно имя хоста. Тем не менее, мне также нужен IP-адрес определенного интерфейса.
Как я могу получить доступ к чему-то вроде информации в hostvars
а для хозяина кроме текущего?
1 ответ
Следующее делает то, что я хочу:
resource r0 {
on {{ groups['hosts'][0] }} {
device /dev/drbd0;
}
on {{ groups['hosts'][1] }} {
device /dev/drbd0;
}
}
Редактировать:
Чтобы получить доступ к переменным хостов, отличных от текущего, таких как IP-адреса, книга воспроизведения должна включать другие хосты в hosts
инструкция. Я тестировал Playbook, который работал только для одного хоста и не мог получить доступ к информации о другом хосте. Вы все еще можете запустить такой тест, но вам нужно фиктивное действие над другими хостами, как описано здесь: https://serverfault.com/a/639269/144800, чтобы собрать факты для других хостов.