Ansible Vault ES

Vault passwords

Test update Por seguridad utilizamos ansible-vault para guardar algunas contraseñas.

Referencias:

http://www.linuxsysadmin.tk/2016/09/lanzando-playbooks-de-ansible-desde-jenkins.html

http://docs.ansible.com/ansible/intro_windows.html

Estructura para uso de VAULT_FILE

Utilizaremos archivos llamados SECRETS_XX, ej:

.
├── ansible.cfg
├── group_vars
│   ├── all
│   │   ├── credentials_sql
│   │   ├── SECRETS_SQL

Los archivos @SECRETS_ALGO@ tienen las variables con las claves.

Variables definidas dentro de archivo @SECRETS_XX@

Las variables tendrán la nomenclatura:

VAULT_NOMBRE_VAR

De esta forma podemos utilizar la variable dentro de nuestras definiciones, en archivos no cifrados con vault para más facil acceso.

Ejemplo, el archivo credentials_sql contiene:

---
#---ommited-lines---
# Default user and pass:
ansible_sql_user: "usuario_sql"
ansible_sql_pass: "{{ VAULT_SQL_PASS }}"  # VAULT_SQL_PASS está dentro de archivo cifrado SECRETS_SQL
#---ommited-lines---

Donde se puede notar claramente que el “{{ VAULT_SQL_PASS }}” es una variable definida dentro de uno de los archivos @SECRETS_XX@.

Configurar @ansible.cfg@

Deben tener dentro de [defaults] en el archivo ansible.cfg, la siguiente línea:

vault_password_file = $HOME/.vault-passfile

Conviene que ansible.cfg esté en el mismo directorio desde donde se ejecuta ansible-playbook, normalmente usando git lo ponemos en la raíz del repositorio. (Es más flexible que configurarlo por servidor)

Creando el vault-passfile

Este archivo tiene la contraseña del vault y se usa automáticamente (configurado en @ansible.cfg@), ejemplo:

echo "somepass" > /home/v744989/.vault-passfile

También para los servidores que ejecutan ansible, ej jenkins:

echo "somepass" > /var/lib/jenkins_home/.vault-passfile

Antes de ejecutarlo conviene cambiar a usuario jenkins, usando ej: @sudo su jenkins@ Donde jenkins_home es el usuario, ejemplo jenkins

Cifrando archivos

ansible-vault encrypt group_vars/all/SECRETS_SQL

Encryption successful

Si ya tenemos el @vault-passfile@ creado no nos preguntará este.

Editar cifrado

ansible-vault edit group_vars/all/SECRETS_SQL

Si ya tenemos el @vault-passfile@ creado no nos preguntará este.