Non è ansible è la configurazione del tuo server. Assicurati che sudo sia consentito per l'utente che ansible sta utilizzando senza password.
- Per farlo accedi al server
- Apri il file sudoers con
sudo visudo
- Assicurati di avere una riga simile a questa:
centos ALL=(ALL) NOPASSWD:ALL
- Sostituisci
centos
con il tuo utente - Salva il file
Puoi provare dal server stesso eseguendo:
sudo -u [yourusername] sudo echo "success"
Se funziona, dovrebbe funzionare anche da ansible.
Per impostazione predefinita, ansible esegue sudo con i flag:-H -S -n
diventare radice. Dove --non-interactive
sarebbe la forma lunga corrispondente per l'opzione -n
. Questa opzione sembra far sì che sudo restituisca il messaggio di errore, senza tentare di lasciare che i moduli di autenticazione facciano il loro lavoro.
Sono riuscito a aggirare l'errore di password creando un ~/.ansible.cfg contenente righe come di seguito, per la versione ansible più pertinente.
ansibile 2.4
[defaults]
sudo_flags = --set-home --stdin
ansible 2.9
[sudo_become_plugin]
flags = -H -S
Questo è stato almeno sufficiente per consentire a pam_ssh_agent_auth.so di eseguirmi e autenticarmi.
Prima della versione 2.8 l'esempio precedente funziona, più recente della 2.8 richiede il secondo esempio. La documentazione per la nuova configurazione di stile è disponibile nella Guida per l'utente di Ansible.