
Nachfolgend sind die Aufgaben aufgeführt, die ich in meiner Nginx-Rolle habe
# 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
Und ich habe ein separates Verzeichnis namens „Handlers“, das den folgenden Inhalt hat.
- 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")
Nicht sicher, ob die Variable command_output von den Handlern gelesen wird.
Antwort1
Das wird nicht passieren, da command_output
es im Handler nicht vorhanden ist. Sie könnten die Fehlerbehandlung der Prüfaufgabe ändern unddefiniere "geändert"mit Ihrer Bedingung, aber in diesem Fall würde ich einfach das validate
Attribut in dertemplate
Aufgabe und überspringen Sie den Rest.
- 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
Hinweis: Damit dies funktioniert, muss der Name des Handlers geändert werden .