Отключение услуг с Ansible - PullRequest
0 голосов
/ 07 ноября 2019

Это может быть скорее вопрос дизайна, чем вопрос синтаксиса. У меня есть набор игровых книжек Ansible, отвечающих за настройку различных системных служб для настройки сервера определенным образом. Я уверен, что это очень типичный случай использования. Однако, мой вопрос: каков наилучший способ выключить и отключить службы, прежде чем продолжить установку и настройку? Вот мои требования:

  • Должен быть в состоянии просто отключить и отключить службы на наборе серверов без запуска установки
  • Также должен иметь возможность выключить / отключить и затем продолжитьс установкой
  • Если мы выполняем завершение работы с последующей установкой, следует очистить все невыделенные узлы и выбрать для установки выделенную группу узлов

Например,скажем, у меня есть 3 сервера: A, B, C и у меня есть 2 службы для установки и настройки: httpd и nginx. Мой файл hosts выглядит следующим образом:

[apache]
A
C

[nginx]
B

Конечный результат должен иметь httpd, работающий на серверах A и C (и выключение / отключение на B), с Nginx на B (и выключение / отключение на A иC).

Мои первоначальные мысли о возможных решениях этого:

  1. Создание отдельных сборников игр для запуска каждого удаления (поскольку у меня уже есть сборники игр для установки) (это может быть правильно,но, конечно, много дублирования кода и больше работы)
  2. Создайте дополнительное задание, которое располагается рядом с файлом main.yml в существующих ролях установки (Возможно ли это? Это правильно, если так.)
  3. Мастер деинсталляции PlayBook, который можно вызвать непосредственно перед запуском любой инсталляции Playbook. (Это неправильно)

Ответы [ 2 ]

0 голосов
/ 14 ноября 2019

грязный способ сделать это - создать две роли установки, одну для apache и одну для nginx, и создать еще две роли для каждого веб-сервера, одну для запуска службы и одну для остановки службы.

создайте книгу воспроизведения, которая сначала нацелена на все хосты и включает роли установки, затем нацеливает [apache] с помощью ролей apache-start и nginx-stop, а затем нацеливает на [nginx] роли nginx-start и apache-stop.

Это очень систематический способ делать то, что вы хотите сделать, но мне это кажется простым?

0 голосов
/ 14 ноября 2019

Сначала я сказал «да, должен быть закрыт из-за низкого качества».

Попробуйте удалить шаблон из вашей ситуации, чтобы было легче понять, и, вероятно, вы найдете ответ.

Подсказка: я не вижу ни одной группы, которая определяет ваши управляемые серверы, я сомневаюсь, что вы хотите использовать «все».

Ключ заключается в использовании членства в подгруппах для определения того, что необходимо удалить или установить. Один playbook может сделать трюк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...