2014-07-14 10 views
5

Mam pewne trudności w dostosowaniu konfiguracji Ansible do mojego środowiska.Odpowiedzialny SSH jako jeden użytkownik i Sudo jako inny

Moje badania środowiska:

  • PermitRootLogin nie
  • Tylko jeden użytkownik może połączyć się przez SSH (foo, bez żadnych przywilejów)
  • użytkownik z uprawnieniami sudo (bar ALL = (ALL) ALL)

Moja ansibl inwentarz gospodarza wygląda następująco:

[servers] 
server1 ansible_ssh_host=192.168.0.1 ansible_sudo=true ansible_ssh_user=foo ansible_sudo_user=bar 

Mam klucz SSH dla użytkownika foo.

Gdy próbuję tego polecenia ad hoc (lub jakiegokolwiek innego) z hasłem bar:

ansible server1 -m raw -a "echo test > /etc/testfile" --ask-sudo-pass 
server1 | FAILED => Incorrect sudo password 

Następnie, jeśli to zrobię to samo polecenie z hasłem foo:

ansible server1 -m raw -a "echo test > /etc/testfile" --ask-sudo-pass 
Sorry, user foo is not allowed to execute '/bin/bash -c echo SUDO-SUCCESS-rlpfhamukjnsfyokqbjpbttviiuildif; echo test > /etc/testfile' as bar on server1. 

Więc ansibl pewno korzystać foo jako użytkownik sudo, a nie tak, jak wskazałem. Czy istnieje sposób na wymuszenie używania paska zamiast foo? I naprawdę nie rozumiem funkcjonalność sudo na ansibl, nawet jeśli mogę użyć tego samego użytkownika na wszystko (bar dla SSH i hasło bar) ansibl dawania zwraca mi:

server1 | FAILED | rc=1 >> 
echo test > /etc/testfile : Permission denied 

Kiedy jestem zalogowaniu jak na moim pasku host i robi "sudo echo test>/etc/testfile" prosi mnie o hasło do paska i wykonuje polecenie poprawnie. Gdzie się mylę z zachowaniem Ansible?

Odpowiedz

4

myśleć o tym tak:

  • ansible_ssh_user jest łatwy do ssh do hosta jako
  • ansible_sudo_user jest użytkownikowi sudo na hoście

Innymi słowy, za pośrednictwem swojego użytkowników i poleceń jako przykład, równoważne komendy, które będą się wyświetlać, to:

ssh [email protected] sudo -u bar "echo test > testfile"

Dlatego należy podać hasło użytkownika, a nie bar użytkownika. Użytkownik foo będzie potrzebował uprawnień do sudo jako bar. Coś takiego w sudoers:

foo ALL=(bar) NOPASSWD: ALL 

Teraz foo można uruchamiać wszystkie polecenia jak bar bez hasła.

Powiązane problemy