Antecedentes
- Usamos Ansible para aprovisionar y administrar la infraestructura de Azure. En este momento ejecutamos Ansible "manualmente", es decir, ejecutamos manualmente libros de jugadas para diversas tareas automatizadas. No hay infraestructura de CI.
- Probablemente no sea relevante, pero gestionamos nuestro inventario mediante un script dinámico
azure_rm.py
. - Nos alienta a ser lo más seguro posible, es decir
- No almacene las contraseñas de Vault en
~/.vault_pass
o en ningún archivo local - No almacene los secretos de Azure en
~/.azure/credentials
- No almacene nada seguro
.bashrc
.
- No almacene las contraseñas de Vault en
En tal escenario, tengo problemas para encontrar una estrategia coherente para garantizar que mis libros de jugadas puedan acceder a los secretos de Azure, mientras sigo las pautas anteriores.
Pregunta
¿Cómo puedo evitar almacenar las credenciales de Ansible Vault y Azure en los archivos, sin dejar de garantizar que mis libros de jugadas puedan acceder a ellos?
Lo que he intentado
Hasta ahora he creado un script de envoltura que
- pide al usuario la contraseña de Vault
- Utiliza eso para descifrar un script de Vaulted Shell
- Evalúa el script, que carga las variables de entorno de Azure en el entorno;
- Ejecuta el libro de jugadas en el entorno que se ha configurado de este modo.
¿Hay alguna solución mejor (más elegante, menos complicada, más "Ansible")?