2017-11-21 2 views
0

Ich versuche, ein playbook zu installieren, Fall auf einem Remote-Host mit ansible-playbook installieren. Eine der Aufgaben besteht darin, die Wrapper-Skripte "InstallHalyard.sh" zum eigentlichen Installer auszuführen (Referenz: https://www.spinnaker.io/setup/install/halyard/).ansible - Es passiert nichts beim Ausführen von InstallHalyard.sh Skript über ansible-playbook

Kein Fehler/Fehler vorhanden, aber auch nichts hat sich geändert, als ob das Script InstallHalyard.sh nicht ausgeführt wird. Allerdings ist es in Ordnung, wenn ich es manuell eintippe. Die andere ähnliche Aufgabe funktioniert perfekt.

Sie können die InstallHalyard.sh Skript Implementierung sehen: here

Jede Idee, über das, was geschieht? Hier

ist die Aufgabe in meinem Textbuch:

name: Run InstallHalyard.sh 
    become: yes 
    become_user: sudo 
    shell: "{{ ansible_env.HOME }}/.spinnaker/InstallHalyard.sh" 

Jede Hilfe würde geschätzt, vielen Dank :)

EDIT:

bereits versucht Skript, Befehl und Shell-Modul.

FYI, das InstallHalyard.sh Skript selbst aufrufen, indem Sie eine Umgebungsvariable vorbei und muss curl -O tun

ich den „Export“ Betrieb im Skript bin Verdacht nicht wie ansible a hat unterschiedliche Verständnis für die Umwelt vars. (Zum Beispiel ansible nicht "$ HOME" erkennen stattdessen verwendet es "{{ansible_env.HOME}}").

EDIT:

fand ich das Skript eine Operation tut, die eine Gabel macht, Kann man mit dieser Art von Operation umgehen?

Getestet auf localhost, bekam das gleiche Ergebnis.

SOLUTION

Es ist wegen der unterschiedlichen Interpretation der Umwelt vars von ansible. Wenn ich das Skript manuell ausführte, setzt der Wrapper die Umgebungsvariable und übergibt sie an die nächsten Skriptaufrufe, was nicht möglich ist. Also, was ich tun, um die Umwelt var manuell mit ansible Modul Einstellung vor der Ausführung des Skripts (nur Zugabe von 2 Linien)

Hier ist meine überarbeitete Aufgabe:

name: Run InstallHalyard.sh 
    become: yes 
    become_user: sudo 
    environment: 
    HAL_USER: "{{ ansible_env.USER }}" 
    shell: "{{ ansible_env.HOME }}/.spinnaker/InstallHalyard.sh" 
+0

Sie sollten das Basispfadverzeichnis überprüfen, Sie können den relativen Pfad durch den absoluten Pfad für die ausführbaren Dateien in InstallHalyard.sh-Skript ersetzen.Und pass auf, dass Sudo bedeutet, dass der Benutzer root-Benutzer ist. Seine Umgebungsvariable basiert auf Root. – Daein

+0

Können Sie versuchen mit: Befehl: "{{ansible_env.HOME}} /. Spinnaker/InstallHalyard.sh" –

+0

@Daein der {{ansible_env.HOME}} gibt den aktuellen Benutzer $ HOME env-Variable, die/home/user ist, bedeutet, dass es absoluten Pfad bedeutet, versuchte ich auch manuell den absoluten Pfad eingegeben, immer noch nicht funktioniert. Danke für die Beantwortung –

Antwort

0

Die Frage ist wirklich, wie debugge ich die Ausgabe eines fehlgeschlagenen Befehls. Ich vermute, dass der Befehl mit einer nützlichen Fehlermeldung fehlschlägt, aber diese Nachricht wird nirgends angezeigt.

Hier ist ein Beispiel debuggen diese Fehler Skript zu helfen:

-name: Run InstallHalyard.sh 
    become: yes 
    become_user: sudo 
    shell: "{{ ansible_env.HOME }}/.spinnaker/InstallHalyard.sh" 
    register: output 

- debug: msg="{{ output.stdout }}" 

- debug: msg="{{ output.stderr }}" 

Versuchen Sie das mal sehen, was Fehlermeldung es Ihnen gab.

+0

Ja. Ich habe den Fehler tatsächlich erhalten, indem ich den Task ausführlich (-v) beim Aufruf von ansible-playbook angezeigt habe. Danke für die Antwort –

Verwandte Themen