Cuando trabajamos con Ansible, a menudo necesitamos manejar información sensible como contraseñas, claves API o credenciales de bases de datos. Guardar estos datos en texto plano dentro de nuestros playbooks representa un riesgo de seguridad. Para solucionar esto, Ansible proporciona Ansible Vault, una herramienta que permite cifrar y gestionar información sensible de manera segura.
En este artículo, veremos cómo funciona Ansible Vault y cómo integrarlo en nuestros playbooks.
1. ¿Qué es Ansible Vault?
Ansible Vault es un sistema de cifrado que permite proteger archivos o variables dentro de Ansible mediante contraseñas o claves de seguridad. Podemos cifrar archivos completos o solo ciertas variables dentro de un playbook.
2. Cómo crear un archivo cifrado con Ansible Vault
Podemos crear un archivo cifrado con el siguiente comando:
ansible-vault create credenciales.yml
Esto abrirá un editor donde podemos escribir las variables sensibles:
usuario_db: admin
password_db: "SuperSecreto123"
Al guardar y salir, el archivo quedará cifrado. Para ver su contenido, usamos:
ansible-vault view credenciales.yml
Si necesitamos editarlo:
ansible-vault edit credenciales.yml
Para cifrar un archivo existente:
ansible-vault encrypt archivo.yml
Y para descifrarlo:
ansible-vault decrypt archivo.yml
3. Uso de Ansible Vault en Playbooks
Podemos incluir variables cifradas dentro de nuestros playbooks cargándolas desde un archivo cifrado.
Ejemplo de un archivo de variables cifradas (secrets.yml
):
ansible_user: root
ansible_password: "ClaveSegura"
Y en el playbook las utilizamos como cualquier variable:
- name: Configurar servidor con credenciales seguras
hosts: servidor
become: yes
vars_files:
- secrets.yml
tasks:
- name: Crear usuario de base de datos
mysql_user:
name: "{{ ansible_user }}"
password: "{{ ansible_password }}"
4. Ejecutar Playbooks con Ansible Vault
Cuando un playbook usa archivos cifrados, debemos proporcionar la contraseña para descifrarlos.
Ejemplo:
ansible-playbook playbook.yml --ask-vault-pass
Si no queremos escribir la contraseña manualmente, podemos guardarla en un archivo (vault_pass.txt
) y usar:
ansible-playbook playbook.yml --vault-password-file vault_pass.txt
5. Cifrado de Variables en un Archivo Normal
Podemos cifrar solo ciertas variables en un archivo normal, en lugar de cifrar todo el archivo.
Ejemplo en vars.yml
:
clave_secreta: !vault |
$ANSIBLE_VAULT;1.1;AES256
3964626661646632343662653437306164386266323030323062633061666531
Esto nos permite mantener algunas variables en texto plano y otras cifradas.
Ansible Vault es una herramienta esencial para mantener la seguridad de nuestras credenciales y datos sensibles en proyectos de Ansible. Su uso adecuado nos permite cifrar archivos y variables de manera sencilla y segura, evitando exponer información crítica.
En el próximo post, hablaremos sobre Gestión de Inventarios en Ansible, donde veremos cómo definir y estructurar los hosts en nuestros proyectos. 🚀