No es ansible, es la configuración de su servidor. Asegúrese de que sudo esté permitido para el usuario que ansible está usando sin contraseña.
- Para hacer eso, inicie sesión en el servidor
- Abra el archivo sudoers con
sudo visudo
- Asegúrate de tener una línea como esta:
centos ALL=(ALL) NOPASSWD:ALL
- Reemplazar
centos
con su usuario - Guarde el archivo
Puede probar desde el propio servidor ejecutando:
sudo -u [yourusername] sudo echo "success"
Si esto funciona, también debería funcionar desde ansible.
Por defecto, ansible ejecuta sudo con las banderas:-H -S -n
para convertirse en raíz. Donde --non-interactive
sería la forma larga correspondiente para la opción -n
. Esta opción parece hacer que sudo devuelva el mensaje de error, sin intentar dejar que los módulos de autenticación hagan lo suyo.
Me las arreglé para sortear el error de contraseña creando un archivo ~/.ansible.cfg que contiene líneas como se muestra a continuación, para la versión ansible más relevante.
ansible 2.4
[defaults]
sudo_flags = --set-home --stdin
ansible 2.9
[sudo_become_plugin]
flags = -H -S
Eso fue al menos suficiente para permitir que pam_ssh_agent_auth.so se ejecute y me autentique.
Antes de la versión 2.8, el ejemplo anterior funciona, más reciente que la 2.8 requiere el segundo ejemplo. La documentación para la configuración del nuevo estilo se puede encontrar en la Guía del usuario de Ansible.