Actualmente estoy trabajando con ansible y quiero automatizar el volcado de mi base de datos remota e importar el archivo volcado a mi base de datos local. Ahora, me encontré con algún problema para usar sudo para cambiar de usuario.
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}}"
cuando trato de correr ansible-playbook playbook.yml vuelve: "sudo: se requiere una contraseña"
Lo que he intentado hasta ahora.
1) lo intenté esta solución añadiendo sudo_flags.
ansible.cfg
[defaults]
sudo_flags = -H -S
luego tengo un error diferente cuando ejecuto mi libro de jugadas: "Tiempo de espera (12s) esperando la solicitud de escalada de privilegios:"
2) aumenté el se acabó el tiempo hasta 30.
3) Agregué el usuario remoto predeterminado al archivo sudoers
Es extraño porque no hay una solicitud de contraseña cuando intento acceder a mi servidor remoto usando ssh y cambiar de default_user a postgres usando sudo su - postgres
- ansible 2.3.0.0
- Python 2.7
- Ubuntu 14.04
Respuestas
-1 para la respuesta № 1El glosario vinculado dice:
El valor predeterminado es ‘-H -S -n’ que establece el INICIOvariable de entorno, solicita contraseñas a través de STDIN y evita pedirle al usuario que ingrese cualquier tipo de información. Tenga en cuenta que ‘-n’ entrará en conflicto con el uso de sudo sin contraseña, como pam_ssh_agent_auth. En algunas situaciones, es posible que desee agregar o eliminar marcas, pero en general la mayoría de los usuarios no necesitarán cambiar esta configuración:
Así que creo que probar la bandera -n también cambiaría algo al menos ya que parece que lo has cambiado a esperando autenticación más bien que no hay autenticación Con tu última modificación.
-1 para la respuesta № 2
Trate de agregar su usuario root en el host.
---
- 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}}"
Puedes intentar agregar la línea a sudoer file
(sudo visudo)
<ssh user> ALL=(ALL) NOPASSWD:ALL
y probarlo, tal vez algo anda mal ahí.