¿Cuál es el equivalente de configuración de Ansible de `--vault-password-file`?

12

Según la ayuda de ansible-playbook, se podría usar --user=REMOTE_USERpara definir el usuario ssh, pero también se podría definir ansible_ssh_user: REMOTE_USERen host- o group_vars.

Pregunta

¿Qué variable debe definirse en el directorio group- o host_vars para evitar que --vault-password-filetenga que definirse durante la ejecución ansible-playbook?

Intentos

  • Cuando ansible_vault_password_file: ~/.vault_pass.txtse define en la configuración, el descifrado falla:

    ERROR! Decryption failed on /path/to/vault
    
  • No se encontraron variables de bóveda asociadas en esta documentación

030
fuente
Por cierto, ahora está documentado (desde la versión 1.7) aquí: docs.ansible.com/ansible/…
Tensibai

Respuestas:

13

Aquí está la definición:

DEFAULT_VAULT_PASSWORD_FILE = get_config(p, DEFAULTS, 'vault_password_file', \
'ANSIBLE_VAULT_PASSWORD_FILE', None, value_type='path')

Esto significa que puedes poner en ansible.cfg o playbook:

vault_password_file: ~/.vault_pass.txt

O en su shell definió esta variable:

export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt
Jiri Klouda
fuente
He dejado el texto de la URL allí intencionalmente para mostrarle a la gente cómo mirar el código puede ayudar cuando falta documentación y dónde se puede encontrar el código fácilmente. Pero supongo que un hipervínculo debería ser suficiente.
Jiri Klouda
Si algo falla, lea la documentación ... y si no hay documentación, lea la fuente ... si tiene acceso a ella ... y si lo hace, asegúrese de estar buscando la versión correcta ... Lo único que queda entonces es poder entenderlo todo. PD: los enlaces pueden dejar de funcionar algún día ...
Pierre.Vriens
@JiriKlouda no parece funcionar aunque se ha definido en group_vars/all/vars. export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txttuvo que ser ejecutado.
030
Esta es una variable de configuración. Tiene que estar en ansible.cfg o equivalente o en el libro de jugadas.
Jiri Klouda
También he comprobado específicamente la versión 2.2 que ejecuta y está allí: github.com/ansible/ansible/blob/stable-2.2/lib/ansible/…
Jiri Klouda
2

Puede establecer una variable de entorno que ANSIBLE_VAULT_PASSWORD_FILEalmacene la ruta del archivo de contraseña del almacén. De esta manera, no siempre tendrá que usar el --vault-password-fileinterruptor cuando ejecute un libro de jugadas.

Esto se describe en la documentación de Ansible's Vault, disponible aquí .

Entonces, agregue export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txta su ~/.bash_profilefuente de ella y estará listo para comenzar.

Si necesita contraseñas de bóveda diferentes para diferentes grupos de hosts, debe hacer lo siguiente:

Dentro de este subdirectorio, cree dos archivos llamados vars y vault. Dentro del archivo vars, defina todas las variables necesarias, incluidas las sensibles. A continuación, copie todas las variables confidenciales en el archivo de almacenamiento y prefija estas variables con vault_. Debe ajustar las variables en el archivo vars para que apunten a las variables vault_ coincidentes y asegurarse de que el archivo vault esté encriptado en bóveda.

Este es un ejemplo del enfoque de mejores prácticas para gestionar información confidencial por grupo. Hay más información disponible en la documentación de Ansible aquí (el texto anterior se copia desde allí).

13dimitar
fuente
1
Esto no permitirá una contraseña diferente por host
Tensibai
¿Te refieres a la contraseña de conexión? Porque si lo haces, ¿qué tiene en común con Ansible Vault?
13dimitar
Me refería a la contraseña de la bóveda, tener sentido tener una contraseña de bóveda diferente para diferentes grupos tiene sentido (y es la raíz de la pregunta hasta donde yo entiendo).
Tensibai
No lo entendí de esa manera. He editado mi respuesta para incluir ese escenario.
13dimitar
Parece mejor Por
cierto