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

Допустим, у меня есть 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. Затем проверка будет выполняться на всех серверах office1, когда будет выполнено новое развертывание DHCP.

Есть идеи с этим? Это плохая идея? Как бы вы решили эту проблему?

1 ответ1

1

Если этот подход работает для вас, то иди с ним. Нет ничего хорошего или плохого в том, как вы определяете конфигурацию. Помимо этого, вы можете использовать переменные.

Однако условное выражение должно выглядеть так:

- include_tasks: tasks/remove-dhcp.yml
  when: `dhcp` not in group_names

group_names - это магическая переменная, которая содержит список всех групп, к которым принадлежит целевой объект.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .