2016-06-28 10 views
-1

Ich möchte ein Spielbuch in Ansible schreiben, die zuerst mein Paket an remote Hosts übertragen und dann ein Skript ausführen. Im Detail, sagen wir, ich habe Apache-Paket in der lokalen Maschine und muss scp/rsync es zu entfernten Knoten A & B. Dann habe ich mein Skript, um das Paket auf A & B sowohl zu installieren, überprüfen, ob es richtig installiert wurde gefolgt von der Überprüfung die Konfigurationsdatei usw. Dieses Skript sollte nur ausgeführt werden, wenn die Übertragung erfolgreich ist.Ansible-Playbook für Remote-Kopie und Skriptausführung

Habe das folgende Playbook geschrieben, das obige Anforderung erfüllen sollte. Bitte bestätigen Sie, ob weitere Verbesserungen erforderlich sind. Danke im Voraus !

Textbuch:

--- 
- hosts: droplets 
    remote_user: root 

    tasks: 

    - name: Copy package to target machines 
     synchronize: src=/home/luckee/apache.rpm dest=/var/tmp/ 

    - name: Run installation and verification script 
     script: /home/luckee/apache_install.sh 
     register: result 

    - name: Show result 
     debug: msg="{{ result.stdout }}" 
... 

Antwort

0

diese Weise wird die Skript-Installation wird nur, wenn die Kopie Aufgaben geändert laufen (wurde im Prozess execuded) und beendet erfolgreich:

--- 
- hosts: droplets 
    remote_user: root 

    tasks: 

    - name: Copy package to target machines 
     synchronize: src=/home/luckee/apache.rpm dest=/var/tmp/ 
     register: result_copy 


    - name: Run installation and verification script 
     script: /home/luckee/apache_install.sh 
     register: result_run 
     when: result_copy.changed 

    - name: Show result 
     debug: msg="{{ result_run.stdout }}" 
...