
Я размышляю над идеей создания сценария, который запускает определенную задачу, когда сервер находится в группе, и другую задачу, когда он не находится в группе.
Допустим, у меня есть office1 со всеми серверами и основной DHCP-сервер:
[office1]
server1
server2
server3
[dhcp]
server2
Я хочу убедиться, что у меня только один DHCP-сервер:
- include: tasks/add-dhcp.yml
when: inventory_hostname in dhcp
- include: tasks/remove-dhcp.yml
when: inventory_hostname not in dhcp
Таким образом, когда я изменю DHCP на server3, он будет установлен на 3 и удален с 2. Затем развертывание DHCP будет запущено на всех серверах office1, когда будет завершено новое развертывание DHCP.
Есть идеи по этому поводу? Это плохая идея? Как бы вы решили эту проблему?
решение1
Если этот подход вам подходит, тогда используйте его. Нет ничего хорошего или плохого в том, как вы определяете конфигурацию. Кроме этого, вы можете использовать переменные.
Однако условное выражение должно выглядеть следующим образом:
- include_tasks: tasks/remove-dhcp.yml
when: `dhcp` not in group_names
group_names
этомагическая переменнаякоторый содержит список всех групп, к которым принадлежит выполняемая цель.