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”
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ń:”
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 1Połą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.