Pull to refresh

Comments 14

ansible.builtin.shell

На этом месте ansible-lint Вам строго укажет, что использовать shell, когда можно обойтись command, - не комильфо :)

И конфиг затем обновлять не рестартом, а релоадом сервиса. Так он сессии рвать не будет.

Сами-то свой плейбук пробовали запускать?

Теперь, если Nginx не запустится, Ansible сам вернёт старую конфигурацию и перезапустит сервис.

Абсолютно нет, потому что handler'ы отработают только после полного завершения плейбука — намного позже чем выполнение этого block

Спасибо за замечание — вы абсолютно правы: по умолчанию Ansible действительно запускает хендлеры в конце плейбука — и если использовать notify без flush_handlers, то nginx перезапустится слишком поздно, и rescue не сработает вовремя.

Этот нюанс я учёл и обновил статью — теперь в примерах после notify добавлен шаг meta: flush_handlers, чтобы перезапуск происходил сразу, а не в конце.

Но свой плейбук вы так и не попробовали запустить, потому что он теперь выдаёт другую ошибку "dict object has no attribute"

(и даже если её исправить, потом будут ещё третья и четвёртая ошибки, про которые я специально не стану ничего писать, чтобы вы всё-таки сами запустили свой плейбук)

По ответу там такое ощущение, что нейросетке скормили. Негоже серьёзным господам проверять плейбуки.

А раскатить с --check и потом посмотреть выдачу (не ругается ли ансибл) не проще? Ошибки в конфиге nginx, по крайней мере, так вполне себе ловятся...

Чтобы nginx отловил ошибку в конфиге, нужно записать новый конфиг, чего в режиме --check делаться естественно не будет

Я думал что все для nginx делают хендлеры сначала nginx -t, и если успешно то уже nginx -s reload. А systrmctl restart nginx даже вручную никто не делает. Для puppet, terraform у меня такой же подход - встроенными средствами самого приложения сделать валидацию и только если она успешна то принимать конфигурацию

Ну есть же у модуля параметр validate, и не нужно городить блоки. Блоки безусловно отличная и очень полезная штука, но в данном конкретном примере лучше вписывается validate

Возможно, я не совсем понимаю Ansible... Но, где там создание резервной копии перед обновлением конфигурации?

Но, где там создание резервной копии перед обновлением конфигурации?

backup: true в блоке ansible.builtin.copy. Перед тем как копируется новый конфиг, старый будет переименован с указанием даты в названии. Таким образом в папке будет 2 конфига, один новый, а второй - это переименованный старый.

Если захочется восстановить конфигурацию, то новый файл удаляется, а старый обратно переименовывается в nginx.conf

Sign up to leave a comment.

Articles