Ich bemerkte, dass Ansible das temporäre Skript mit einem Semikolon entfernt, um die Bash-Befehle zu trennen. HierSpeichern Sie temporäre ansible Shell-Skripte statt zu löschen
ist ein Beispiel Befehl:
EXEC ssh -C -tt -v -o ControlMaster=auto -o ControlPersist=60s -o
ControlPath="/Users/devuser/.ansible/cp/ansible-ssh-%h-%p-%r" -o
KbdInteractiveAuthentication=no -o
PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey
-o PasswordAuthentication=no -o ConnectTimeout=10 build /bin/sh -c
'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python
/home/ec2-user/.ansible/tmp/ansible-tmp-1430847489.81-75617096172775/docker;
rm -rf
/home/ec2-user/.ansible/tmp/ansible-tmp-1430847489.81-75617096172775/
>/dev/null 2>&1'
Gibt es eine Möglichkeit ansible zu sagen, das Semikolon mit einem Doppel-Et-Zeichen zu ersetzen oder zu sagen, das Skript oder die Ausgabe der Inhalte zu speichern, wenn läuft ansible- Spielbuch?
Ich versuche, einen Fehler in diesem Skript zu debuggen und jetzt das einzige, was erscheint, ist dies:
failed: [build] => {"changed": false, "failed": true}
msg: ConnectionError(ProtocolError('Connection aborted.', error(2, 'No such file or directory')),)
Funktioniert nicht. Es gibt keine Dateien in ~/.ansible/tmp/ – hfranco
Das funktioniert für mich. Überprüfst du den Remote-Computer? Dort werden die Python-Dateien ausgeführt. –
Ich wollte nur sagen, dass, wenn Ihr Playbook auf 'localhost' abzielt, Ansible * Dateien auf' ~/.ansible/tmp' auf dem Rechner kopiert, auf dem Sie 'ANSIBLE_KEEP_REMOTE_FILES = 1 ansible-playbook ...' ausgeführt haben . Dies macht die Verwendung von [pdb-clone] (https://bitbucket.org/xdegaye/pdb-clone/wiki/Home) zum Debuggen etwas einfacher. Fügen Sie einfach (vorübergehend) 'von pdb_clone import pdb; pdb.set_trace_remote() 'direkt in den Ansible-Quellen in der Nähe des vermuteten Problems und dann' pdb-attach' in einem anderen Terminal, wenn es den Haltepunkt erreicht. (Sie können auch remote debuggen, aber es ist ein bisschen komplizierter.) – evadeflow