2016-02-03 13 views
7

Używam ansijet do automatyzacji instrukcji ansibli, które będą uruchamiane po kliknięciu przycisku. Playbook ma na celu zatrzymanie działających instancji w AWS. Po uruchomieniu, ręcznie z wiersza poleceń, zakładka działa dobrze i wykonuje zadania. Ale kiedy uruchomić poprzez interfejs WWW z ansijet po napotkania błęduUwierzytelnianie lub błąd uprawnień, nie ma uprawnień do katalogu zdalnego

Authentication or permission failure. In some cases, you may have been able to authenticate and did not have permissions on the remote directory. Consider changing the remote temp path in ansible.cfg to a path rooted in "/tmp". Failed command was: mkdir -p $HOME/.ansible/tmp/ansible-tmp-1390414200.76-192986604554742 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1390414200.76-192986604554742 && echo $HOME/.ansible/tmp/ansible-tmp-1390414200.76-192986604554742, exited with result 1: 

Poniżej znajduje się konfiguracja ansible.cfg.

# some basic default values... 

inventory  = /etc/ansible/hosts 
#library  = /usr/share/my_modules/ 
remote_tmp  = $HOME/.ansible/tmp/ 
pattern  = * 
forks   = 5 
poll_interval = 15 
sudo_user  = root 
#ask_sudo_pass = True 
#ask_pass  = True 
transport  = smart 
#remote_port = 22 
module_lang = C 

próbuję zmienić ścieżkę remote_tmp do /home/ubuntu/.ansible/tmp ale wciąż otrzymuję ten sam błąd.

Odpowiedz

2

Domyślnie użytkownik Ansible łączy się ze zdalnymi serwerami, ponieważ będzie miał taką samą nazwę, jak użytkownik ansibli działa jako. W przypadku Ansijet, spróbuje połączyć się ze zdalnymi serwerami z użytkownikiem, który rozpoczął proces node.js w Ansijet. Można to zmienić, podając remote_user w książce adresowej lub globalnie w pliku ansible.cfg.

SLAUM spróbuje utworzyć katalog tymczasowy, jeśli jeszcze nie istnieje, ale nie będzie mógł go użyć, jeśli ten użytkownik nie ma katalogu domowego lub jego uprawnienia do katalogu domowego nie pozwalają na dostęp do zapisu.

Właściwie zmieniłem katalog tymczasowy w moim pliku ansible.cfg, aby wskazywał na lokalizację w/tmp, która obsługuje tego typu problemy.

remote_tmp = /tmp/.ansible-${USER}/tmp

+0

ansijet działa jako użytkownik ubuntu. Zmieniłem ścieżkę 'remote_user' i' remote_tmp', jak powiedziałeś. Ale wciąż stoi przed tym samym błędem. –

+0

Czy to ten sam dokładny błąd, czy komunikat zmienił się po edytowaniu konfiguracji ansible.cfg remote_tmp? –

+0

Były dwa playbook, jeden jest, aby uruchomić instancję innego, aby go zatrzymać. Teraz po zmianie zgodnie z twoją sugestią, zakładka do uruchamiania instancji działa dobrze, ale pojawia się ten sam błąd w książce, aby zatrzymać instancję. –

-1

wychodził ten sam problem jakiś czas temu i rozwiązany w ten sposób. Możliwe, że katalog zdalnego serwera /tmp nie ma wystarczających uprawnień do zapisu. Uruchom komendę ls -ld /tmp, aby upewnić się, że jej wydruk wygląda mniej więcej tak: drwxrwxrwt 7 root root 20480 Feb 4 14:18 /tmp Mam root użytkownika jako superużytkownika i /tmp ma uprawnienie 1777.

Również dla mnie po prostu - remote_tmp = /tmp działa dobrze.

Innym sprawdzeniem jest upewnienie się, że $ HOME jest obecny w powłoce, którą próbujesz uruchomić. Ansaly uruchamia polecenia przez powłokę /bin/sh, a nie /bin/bash. Upewnij się, że $ HOME jest obecny w powłoce sh.

+0

/tmp ma specjalne uprawnienia w systemach linuxowych (bitach lepkich), nie jest to po prostu 777, które może być luką w zabezpieczeniach niektórych aplikacji korzystających z/tmp. Używanie/tmp we własnych przerwach, jeśli inny użytkownik kiedykolwiek uruchomi skrypty przeciwko tym komputerom (dostaną błąd uprawnień). –

+0

Tak, masz rację. Przyklejony bit powinien być ustawiony na '/ tmp'. Jest również ustawiony na mój, więc uprawnienia powinny wynosić 1777, a nie 0777. Poprawione w powyższej odpowiedzi.Dzięki za wskazanie go –

+0

Nigdy nie uruchomiłem playbooka z dwoma użytkownikami jednocześnie. Ale tak, może to być możliwy przypadek i może się zepsuć, jeśli dwóch różnych użytkowników używa go w tym samym czasie. –

Powiązane problemy