2017-04-12 7 views
0

Ich habe eine grundlegende Bereitstellung Playbook, das über einige Apache-Konfigurationsdateien und Python-Dateien mit Ansible und für einige der Dateien den Zustand kopiert ist registriert, damit ich Apache neu laden kann, wenn die Dateien geändert werden.Ansible: Neustart Apache nur einmal, nicht mehrmals bei der Verwendung Service - Methode mit With_items Liste

Ich kann nicht herausfinden, wie Apache neu zu laden, also wenn Apache 4 der Dateien geändert wird, würde Apache nur einmal neu laden (derzeit wird es einmal pro geänderte Datei neu geladen).

Textbuch Ich verwende:

- name: Copy apache files 
    become: yes 
    become_method: sudo 
    copy: src=../files/index.html dest=/var/www/docs/index.html owner=root group=root mode=755 

- name: Copy app variable file 
    become: yes 
    become_method: sudo 
    copy: src=../files/app_vars dest=/etc/app owner=root group=root mode=644  

- name: Copy pyapp files 
    become: yes 
    become_method: sudo 
    copy: src=../files/pyapp.py dest=/var/www/pyapp/pyapp.py owner=flask group=flask mode=755 
    register: pyapp 

- name: Copy wsgi files 
    become: yes 
    become_method: sudo 
    copy: src=../files/pyapp.wsgi dest=/var/www/pyapp/pyapp.wsgi owner=flask group=flask mode=755 
    register: wsgi 

- name: Copy apache files 
    become: yes 
    become_method: sudo 
    copy: src=../files/pyapp.conf dest=/etc/httpd/conf.d/pyapp.conf owner=root group=root mode=644 
    register: pyapp_conf 

- name: Copy apache files 
    become: yes 
    become_method: sudo 
    copy: src=../files/docs.conf dest=/etc/httpd/conf.d/docs.conf owner=root group=root mode=644 
    register: docs 

- name: Reload Apache configs if pyapp or Apache - files are changed 
    become: yes 
    become_method: sudo 
    service: name=httpd state=reloaded 
    when: "{{ item }}" 
    with_items: 
    - pyapp.changed 
    - wsgi.changed 
    - pyapp_conf.changed 
    - docs.changed 
+0

[Handler: Laufende Operationen bei Änderung] (https://docs.ansible.com/ansible/playbooks_intro.html#handlers-running-operations-on-change) – techraf

Antwort

0

Sie könnten Textbuch mit ändern:

tasks: 
    - name: copy files 
     copy: src={{ item.src }} dest={{ item.dest }} owner={{ item.owner }} group={{ item.group }} mode={{ item.mode }} 
     with_items: 
     - {src: '../files/pyapp.wsgi', dest: '/var/www/pyapp/pyapp.wsgi', mode: 755, owner: 'flask', group: 'flask'} 
     - ... <all other files you copy> 
     notify: httpd restart 

handlers: 
    - name: httpd restart 
     service: name=httpd state=reloaded 

Verschieben become:yes aus Textbuch beginnen direkt nach hosts:.

Verwandte Themen