2016-06-19 10 views
0

Fehler beim Ausführen unter playbook. Das Python-Skript ist auf meinem Master und ich möchte, dass es auf zwei Slaves läuft. Keine Ahnung, was los ist.Ansible playbook script failure

[email protected]:~/playbooks$ ansible-playbook runscript.yml 

PLAY [droplets] **************************************************************** 

TASK [setup] ******************************************************************* 
ok: [CentOS1] 
ok: [CentOS2] 

TASK [Run python script] ******************************************************* 
fatal: [CentOS1]: FAILED! => {"changed": false, "cmd": "/home/luckee/python/userfind.py", "failed": true, "msg": "[Errno 2] No such file or directory", "rc": 2} 
fatal: [CentOS2]: FAILED! => {"changed": false, "cmd": "/home/luckee/python/userfind.py", "failed": true, "msg": "[Errno 2] No such file or directory", "rc": 2} 

NO MORE HOSTS LEFT ************************************************************* 
     to retry, use: --limit @runscript.retry                                     

PLAY RECAP *********************************************************************                             
CentOS1     : ok=1 changed=0 unreachable=0 failed=1                              
CentOS2     : ok=1 changed=0 unreachable=0 failed=1                              

[email protected]:~/playbooks$ 

Hier ist das Playbook.

--- 
- hosts: droplets 
    remote_user: root 

    tasks: 
    - name: Run python script 
    command: /home/luckee/python/userfind.py 
... 

Wir freuen uns auf Ihre Hilfe!

+0

"Keine Ahnung, was los ist" - nun, es heißt 'keine solche Datei oder Verzeichnis '. Versuchen Sie, die Dateipfade zu überprüfen? – henrikstroem

Antwort

1

Sie versuchen, eine lokale Datei auf einem Remote ausführen Gastgeber.

Wenn Sie es remote ausführen möchten, müssen Sie es zuerst übertragen oder script module verwenden. Es überträgt zuerst die Datei an die entfernten Hosts und führt sie dann aus.

- name: Run python script 
    script: /home/luckee/python/userfind.py 

Wenn Sie das Skript lokal ausführen sollten, verwenden Delegation:

- name: Run python script 
    command: /home/luckee/python/userfind.py 
    delegate_to: localhost 

die Ausgabe einer Aufgabe müssen Sie zuerst register das Ergebnis zu zeigen, und der Druck es mit einem aus debug Aufgabe.

+0

Ja, es hat tadellos ohne irgendwelche Fehler funktioniert. Aber wie kann ich die Ausgabe des Skripts von den Hosts bekommen? Zum Beispiel: Das obige Skript sucht nach einem Benutzer und druckt etwas. –

+0

Sie können die Ausgabe von jedem Modul mit 'Register' erhalten: http://docs.ansible.com/ansible/playbooks_variables.html#registered-variables Wenn Sie die Ausgabe anzeigen möchten, können Sie dies mit einer' debug' Aufgabe tun . Ich habe ein Beispiel in die obige Antwort eingefügt. – udondan

0

Ich denke, zuerst müssen Sie das Skript auf die Remote-Hosts übertragen und sie dann laufen:

--- 
- hosts: droplets 
    remote_user: root 

    tasks: 
    - name: copy the script to the remote host 
    copy: 
     src: userfind.py 
     dest: /tmp/userfind.py 
     mode: 0777 

    - name: Run python script 
    command: python /tmp/userfind.py 

Befestigen Sie den Pfad wie pro Ihre Anforderung

Verwandte Themen