Для достижения цели в Ansible рекомендуется в основном использовать сервисные модули, оказание услуг
, сисвинит
или же системад
. Например, как
---
- хосты: локальный
стать: да
стать_метод: sudo
собрать_факты: да
задачи:
- название: Сбор фактов об обслуживании
сервис_факты:
- имя: Убедитесь, что служба остановлена
системный:
имя: httpd
состояние: остановлено
включено: нет
когда: ("httpd.service" в службах)
Если вы любите использовать ракушка
_module, мне нужно было больше работы.
В примере для нгинкс
сначала получите правильный PID, так как есть основной и четыре рабочих процесса.
- имя: Получить PID nginx
ракушка:
cmd: "ps -C nginx -o pid --no-headers | голова 1"
предупредить: ложь
изменено_когда: ложь
check_mode: ложь
регистрация: nginx_pid
Также можно было бы сделать что-то вроде
- имя: Получить PID nginx
ракушка:
cmd: "пидоф нгинкс"
предупредить: ложь
изменено_когда: ложь
check_mode: ложь
регистрация: nginx_pids
- имя: Показать PID
отлаживать:
переменная: nginx_pids
- название: Убить nginx
ракушка:
cmd: "убить -9 {{nginx_pids}}"
...
Касательно
Я хотел бы добавить опцию выхода из запуска ansible-playbook, если это не удалось.
к Завершить запуск плейбука вы могли бы использовать
- мета: end_play
когда: condition_is_met
использовать потерпеть поражение
_module в
- имя: Задача не удалась из-за
потерпеть поражение:
сообщение: "{{ fail_message }}"
когда: condition_is_met
или утверждать
_модуль.
Что касается кода выхода (EC) или кода возврата (RC), вы можете изучить Как получить список кодов выхода (и/или кодов возврата) и значение для команды/утилиты?.