
Abaixo estão as tarefas que tenho em minha função 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
E eu tenho um diretório separado chamado manipuladores, que possui o conteúdo abaixo.
- 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")
Não tenho certeza se a variável command_output será lida pelos manipuladores.
Responder1
Não vai, porque command_output
não existe no manipulador. Você pode modificar o tratamento de erros da tarefa de verificação edefina "alterado"com sua condição, mas neste caso eu usaria apenas o validate
atributo notemplate
tarefa e pule o resto.
- 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
Nota: O nome do manipulador precisa ser alterado para Reload nginx
para que isso funcione.