Я пытаюсь реализовать Ansible в нашей команде для управления различными видами приложений, такими как файлы конфигурации для продуктов и приложений, распределение сценариев обслуживания, ...Запуск Ansible playbook на UNIQUE комбинацию пользователя/хоста
Нам не нравится работать с «hostnames» в нашей команде, потому что у нас есть 300+ из них с бессмысленными именами. Для этого, я начал создавать псевдонимы для них в анзибль файл хостов, как:
[bpm-i]
bpm-app1-i1 ansible_user=bpmadmin ansible_host=el1001.bc
bpm-app1-i2 ansible_user=bpmadmin ansible_host=el1003.bc
[bpm-u]
bpm-app1-u1 ansible_user=bpmadmin ansible_host=el2001.bc
bpm-app1-u2 ansible_user=bpmadmin ansible_host=el2003.bc
[bpm-all:children]
bpm-i
bpm-u
Значение у нас есть приложение BPM под названием «app1» и он развертывается на двух хозяев в интеграции тестирования и на двух хозяев в гается приемочное тестирование. Все идет нормально. Теперь я могу запустить загрузочную книгу Ansible (например), чтобы настроить SSH-доступ (authorized_keys) для членов команды или нажать сценарий обслуживания. Я могу запускать эти ПБ на каждом хосте отдельно, на всех хостах ITT или UAT или даже везде.
Но, как правило, мы снова установим то же приложение app1 на существующем хосте, но с другой целью - скажем, «обучающая» среда. Мой рефлекс должен был бы сделать это:
[bpm-i]
bpm-app1-i1 ansible_user=bpmadmin ansible_host=el1001.bc
bpm-app1-i2 ansible_user=bpmadmin ansible_host=el1003.bc
[bpm-u]
bpm-app1-u1 ansible_user=bpmadmin ansible_host=el2001.bc
bpm-app1-u2 ansible_user=bpmadmin ansible_host=el2003.bc
[bpm-t]
bpm-app1-t1 ansible_user=bpmadmin ansible_host=el2001.bc
bpm-app1-t2 ansible_user=bpmadmin ansible_host=el2003.bc
[bpm-all:children]
bpm-i
bpm-u
bpm-t
Но ... бегущий PB становится беспорядком и вызывает ошибки. Логически у меня есть два псевдонима для достижения одной и той же комбинации пользователей/хостов: bpm-app1-u1 и bpm-app1-t1. Я не возражаю, это совершенно логично, но если бы я должен был протестировать новый сценарий обслуживания, я бы сначала подталкивал его к bpm-app1-i1 для тестирования, и когда все в порядке, я, вероятно, запустил PB против bpm-all. Но из-за неповторимых комбинаций пользователей и хостов для некоторых псевдонимов PB будет работать несколько раз на одном и том же пользователе/хосте. В зависимости от действий в PB это может работать по совпадению, но это может также терпеть неудачу.
Невозможно ли сообщить Ansible «Run on ALL - UNIQUE user/host combination»?
Комментарий к вышесказанному: Это стилизованный пример. Изменение имен псевдонимов, группировка u1 и t1 (и u2 и t2) в другие псевдонимы не является опцией, только наличие «u» без «t» не является опцией. Единственное, что имеет значение: Сделать Ansible проверить, что он не запускает playbook на пользователя/хоста дважды при запуске playbook против «всех» хостов. – domi756
Я не понял, почему хосты «t» должны иметь те же имена, что и «u». Имя хоста должно быть уникальным. Но в целом я настоятельно рекомендую использовать разные файлы инвентаря для разных сред. Это просто дополнительная предосторожность, чтобы защитить вас от случайной игры на неправильном наборе хостов. Это не решает вашу проблему, но с разными файлами хоста вы можете просто вызвать несколько раз с каждым файлом инвентаря отдельно. Тогда это должно решить вашу неподходящую проблему с именем узла. – udondan
Но имейте в виду, что вы не можете определять хост_вары по отдельности, а также не сможете использовать кеширование фактов, поскольку это противоречило бы между этими разными хостами с тем же именем. – udondan