Ho un compito ansible semplice che crea un file:Ansible problema di autorizzazione
- name: create fake file
file:
name: /opt/refdata/PROD02/roman.delete
state: touch
ho generato le chiavi pubbliche/private e ha aggiunto un pubblico authorized_keys2 per l'utente sto facendo funzionare come sul host di destinazione.
Quando provo a farlo funzionare io ottenere il seguente errore:
failed: [experiment01] => {"failed": true, "parsed": false}
Traceback (most recent call last):
File "/home/acplus_uat01/.ansible/tmp/ansible-tmp-1441921944.69-3869708445827/file", line 1999, in <module>
main()
File "/home/acplus_uat01/.ansible/tmp/ansible-tmp-1441921944.69-3869708445827/file", line 372, in main
open(path, 'w').close()
IOError: [Errno 2] No such file or directory: '/opt/refdata/PROD02/roman.delete'
Così, per vedere se ho problemi con ssh o pitone ho provato questo - ho creato un file di pitone con una riga:
open('/opt/refdata/PROD02/roman.delete', 'w').close()
e corse questo dallo stesso luogo e lo stesso utente come corro ansible:
cat test2.py | ssh -i ~/.ssh/myPrivateKey -q [email protected] python -
e ha creato il file.
Quindi, la mia domanda è: dov'è il problema, perché non può creare un file?
il modo in cui si esegue il Playbook è questo:
ansible-playbook -i inventory/prod/ acc.yml -v --vault-password-file=~/.ansible-vault-pw --private-key ~/.ssh/myPrivateKey
Ho anche cercato di creare un file in/tmp/e ansible funzionato.
Modifica: Quindi, un altro aggiornamento: ho creato la directory in cui sto scrivendo il file in world writable (777) e ha creato il file. Quindi, la domanda è - ciò che è diverso in Ansible che
cat test2.py | ssh -i ~/.ssh/myPrivateKey -q [email protected] python -
opere e facendo essenzialmente la stessa cosa attraverso Ansible non lo fa.
Dal momento che il playbook ansible può scrivere i file in/tmp ma non qui, mi piacerebbe aggiungere un passaggio al gioco a 'debug: var = ansible_ssh_user' e verificare che corrisponde l'utente che lo script python di essere gestita da . – nikobelia
Mi piacerebbe semplicemente toccare/tmp/foo da dentro Ansible, quindi controllare le autorizzazioni e la proprietà di/tmp/foo in seguito per verificare che il file sia stato creato da Ansible con gli attributi che ci si aspetta. –
Viene creato con gli attributi che mi aspetto - utente/gruppo destro –