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"
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
Können Sie versuchen mit: Befehl: "{{ansible_env.HOME}} /. Spinnaker/InstallHalyard.sh" –
@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 –