
Ниже приведены задачи, которые я выполняю в своей роли nginx.
# tasks file for nginx
- name: Backup and update nginx configuration file
template:
src: templates/proxy.conf.j2
dest: "{{ nginx_conf }}"
backup: true
owner: root
group: root
mode: 0644
- name: Running nginx -t to validate the config
shell: 'nginx -t'
register: command_output
become: true
notify: Reload nginx
- debug:
var: command_output.stderr_lines
У меня есть отдельный каталог под названием handlers, содержимое которого приведено ниже.
- name: Reloading nginx service only if the syntax is ok
systemd:
name: nginx.service
state: reloaded'
when: command_output.stderr | regex_search("syntax is ok")
Не уверен, будет ли переменная command_output прочитана обработчиками.
решение1
Это не будет, потому что command_output
не существует в обработчике. Вы можете изменить обработку ошибок задачи проверки иопределить "изменился"с вашим условием, но в этом случае я бы просто использовал validate
атрибут вtemplate
задание и пропустите остальное.
- name: Backup and update nginx configuration file
template:
src: templates/proxy.conf.j2
dest: "{{ nginx_conf }}"
backup: true
owner: root
group: root
mode: 0644
validate: nginx -t
notify: Reload nginx
Reload nginx
Примечание: Чтобы это сработало, необходимо изменить имя обработчика на .