/ / Poradnik Ansible: Wymaga hasła sudo [duplikat] - python, ansible, ansible-2.x

Ansible playbook: Wymaga hasła sudo [duplicate] - python, ansible, ansible-2.x

Obecnie pracuję z programem ansible i chcę zautomatyzować zrzut mojego zdalnego DB i zaimportować zrzucony plik do mojego lokalnego DB. Teraz napotkałem problem z używaniem sudo zmienić użytkownika.

playbook.yml

  ---
- hosts: remoteserver
vars:
remote_db_name: dbname
remote_filename: dbname_{{ lookup("pipe", "date +%m-%d-%Y") }}
local_folder: /home/alde/database_backups/

tasks:
- name: Dump database
become: yes
become_user: postgres
shell: pg_dump -d {{remote_db_name}} > "{{remote_filename}}"

kiedy próbuję uciekać ansible-playbook playbook.yml zwraca: „sudo: wymagane jest hasło”

wprowadź opis obrazu tutaj


Co próbowałem do tej pory.

1) Próbowałem to rozwiązanie dodając sudo_flags.

ansible.cfg

[defaults]
sudo_flags = -H -S

wtedy wystąpił inny błąd podczas wykonywania mojego poradnika: „Limit czasu (12 s) oczekiwania na monit o eskalację uprawnień:”

wprowadź opis obrazu tutaj

2) Zwiększyłem koniec czasu do 30.

3) Dodałem domyślnego użytkownika zdalnego do pliku sudoers

To dziwne, ponieważ nie ma monitu o hasło, gdy próbuję uzyskać dostęp do mojego zdalnego serwera za pomocą ssh i przejść z default_user na postgres przy użyciu sudo su - postgres


  • ansible 2.3.0.0
  • Python 2.7
  • Ubuntu 14.04

Odpowiedzi:

-1 dla odpowiedzi nr 1

Połączony glosariusz mówi:

Wartość domyślna to „-H -S -n”, która ustawia HOMEzmienna środowiskowa, monituje o podanie hasła przez STDIN i unika monitowania użytkownika o podanie dowolnego rodzaju danych. Pamiętaj, że „-n” spowoduje konflikt z użyciem uwierzytelniania sudo bez hasła, na przykład pam_ssh_agent_auth. W niektórych sytuacjach możesz chcieć dodać lub usunąć flagi, ale ogólnie większość użytkowników nie będzie musiała zmieniać tego ustawienia:

Myślę więc, że próba użycia flagi -n przynajmniej zmieni coś, ponieważ wygląda na to, że zmieniłeś to na oczekiwanie na uwierzytelnienie zamiast nie ma uwierzytelnienia z twoją ostatnią modyfikacją.


-1 dla odpowiedzi № 2

Spróbuj dodać użytkownika root w hoście.

 ---
- hosts: remoteserver
remote_user: root
become: yes
become_user: root
become_method: sudo
vars:
remote_db_name: dbname
remote_filename: dbname_{{ lookup("pipe", "date +%m-%d-%Y") }}
local_folder: /home/alde/database_backups/

tasks:
- name: Dump database
become: yes
become_user: postgres
shell: pg_dump -d {{remote_db_name}} > "{{remote_filename}}"

Możesz spróbować dodać linię sudoer file (sudo visudo) <ssh user> ALL=(ALL) NOPASSWD:ALL i przetestujcie, może coś jest nie tak.