2015-05-05 16 views
13

Ho notato che Ansible rimuove lo script temporaneo utilizzando un punto e virgola per separare i comandi bash.Salvare gli script di shell temporanea ansible invece di eliminare

Ecco un esempio del comando:

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' 

C'è un modo per dire ansible per sostituire il punto e virgola con un doppio commerciale o per dirgli di salvare lo script o l'uscita del contenuto durante l'esecuzione ansible- playbook?

Sto cercando di eseguire il debug di un errore in questo script e in questo momento l'unica cosa che appare è questo:

failed: [build] => {"changed": false, "failed": true} 
msg: ConnectionError(ProtocolError('Connection aborted.', error(2, 'No such file or directory')),) 

risposta

26

ho trovato la variabile d'ambiente -

export ANSIBLE_KEEP_REMOTE_FILES=1 

Impostare questo, allora eseguire nuovamente ansible-playbook, quindi ssh e cd su ~/.ansible/tmp/per trovare i file.

+1

Non funziona. Non ci sono file in ~/.ansible/tmp/ – hfranco

+0

Questo funziona per me. Stai controllando la macchina remota? Ecco dove vengono eseguiti i file Python. –

+0

Volevo solo dire che se il tuo playbook ha come target 'localhost', Ansible * fa * copia i file in ~ ~/.ansible/tmp' sulla macchina che hai usato per eseguire' ANSIBLE_KEEP_REMOTE_FILES = 1 ansible-playbook ... ' . Questo rende più facile l'uso di [pdb-clone] (https://bitbucket.org/xdegaye/pdb-clone/wiki/Home) per il debug. Basta aggiungere (temporaneamente) 'da pdb_clone import pdb; pdb.set_trace_remote() 'direttamente nelle fonti Ansible vicino a dove si sospetta che il problema si trovi, e quindi esegui' pdb-attach' in un altro terminale quando raggiunge il punto di interruzione. (Puoi anche eseguire il debug in remoto, ma è un po 'più complicato.) – evadeflow

Problemi correlati