Sie möchten mehr über die Handler in Ansible erfahren?

Sie möchten mehr über die Handler in Ansible erfahren?

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_outputes 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 validateAttribut in dertemplateAufgabe 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 nginxHinweis: Damit dies funktioniert, muss der Name des Handlers geändert werden .

verwandte Informationen