2015-09-10 7 views
6

Mam proste zadanie ansibl który tworzy plik:ansibl pozwolenie problem

- name: create fake file 
    file: 
    name: /opt/refdata/PROD02/roman.delete 
    state: touch 

I wygenerowane klucze publiczne/prywatne i podwyższyć publiczną authorized_keys2 dla użytkownika używam jak na komputerze docelowym.

Kiedy próbuję go pojawia się następujący błąd run:

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' 

Tak więc, aby zobaczyć, czy mam problemy z ssh lub pytona to próbowałem - Stworzyłem plik Pythona z jednej linii:

open('/opt/refdata/PROD02/roman.delete', 'w').close() 

i pobiegł to w tym samym miejscu i tego samego użytkownika, jak biegnę ansibl:

cat test2.py | ssh -i ~/.ssh/myPrivateKey -q t[email protected] python - 

i stworzył plik.

Moje pytanie brzmi - gdzie jest problem, dlaczego nie może utworzyć pliku?

sposób uruchomić Playbook to:

ansible-playbook -i inventory/prod/ acc.yml -v --vault-password-file=~/.ansible-vault-pw --private-key ~/.ssh/myPrivateKey 

Próbowałem też utworzyć plik w/tmp/a ansibla pracował.

Edit: Tak, kolejna zmiana - Zrobiłem katalog piszę plik na zapisywalny (777) i jest tworzony plik. Tak więc pytanie brzmi: co różni się w Ansible, że działa i robi zasadniczo to samo poprzez Ansible, nie różni się w Ansay.

+0

Ponieważ ansibl PlayBook mogą zapisywać pliki w/tmp, ale nie tutaj, bym dodać krok do gry na 'debug: var = ansible_ssh_user' i sprawdzić, czy pasuje do użytkownika, że ​​skrypt Pythona prowadzony przez . – nikobelia

+0

Po prostu dotknę/tmp/foo z poziomu Ansible, a potem przejrzę na uprawnienia i prawa własności/tmp/foo, aby sprawdzić, czy plik jest tworzony przez Ansible z oczekiwanymi atrybutami. –

+0

Jest tworzony z atrybutami, których się spodziewam - właściwy użytkownik/grupa –

Odpowiedz

3

Jeśli /opt/refdata/PROD02/ nie istnieje należy utworzyć pierwszy

file: 
    name: /opt/refdata/PROD02 
    state: directory 
    recurse: yes 
    mode: 0755 

Ansible documentation katalog mówi:

recurse - Set the specified file attributes (applies only to state=directory)

Więc ansibl nie można utworzyć plik i wszystkie katalogi w to ścieżka w jednym poleceniu.

Następnie za pomocą drugiego polecenia należy utworzyć sam plik.

name: create fake file 
    file: 
    name: /opt/refdata/PROD02/roman.delete 
    state: touch 
+0

/opt/refdata/PROD02/istnieje –