Ansible playbook для развертывания на новом сервере и удаления с других

Ansible playbook для развертывания на новом сервере и удаления с других

Я размышляю над идеей создания сценария, который запускает определенную задачу, когда сервер находится в группе, и другую задачу, когда он не находится в группе.

Допустим, у меня есть 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этомагическая переменнаякоторый содержит список всех групп, к которым принадлежит выполняемая цель.

Связанный контент