Není možné, že jde o konfiguraci vašeho serveru. Ujistěte se, že je sudo povoleno pro uživatele, který ansible používá bez hesla.
- Chcete-li to provést, přihlaste se k serveru
- Otevřete soubor sudoers pomocí
sudo visudo
- Ujistěte se, že máte řádek podobný tomuto:
centos ALL=(ALL) NOPASSWD:ALL
- Nahraďte
centos
s vaším uživatelem - Uložte soubor
Můžete to zkusit ze samotného serveru spuštěním:
sudo -u [yourusername] sudo echo "success"
Pokud to funguje, mělo by to fungovat i z ansible.
Ve výchozím nastavení ansible spouští sudo s příznaky:-H -S -n
stát se rootem. Kde --non-interactive
by byl odpovídající dlouhý tvar pro volbu -n
. Zdá se, že tato volba způsobí, že sudo vrátí chybovou zprávu, aniž by se pokusilo nechat ověřovací moduly, aby udělaly svou věc.
Podařilo se mi obejít chybu hesla vytvořením ~/.ansible.cfg obsahující řádky, jak je uvedeno níže, pro nejrelevantnější verzi ansible.
ansible 2.4
[defaults]
sudo_flags = --set-home --stdin
ansible 2.9
[sudo_become_plugin]
flags = -H -S
To stačilo alespoň na to, aby pam_ssh_agent_auth.so mohl běžet a ověřit mě.
Před verzí 2.8 funguje výše uvedený příklad, novější než 2.8 vyžaduje druhý příklad. Dokumentaci pro konfiguraci nového stylu lze nalézt v uživatelské příručce Ansible.