Introducción a Ansible Vault

Ansible Vault es una herramienta que permite a los usuarios cifrar datos sensibles, como contraseñas o claves, para que puedan ser almacenados de manera segura en los archivos de configuración de Ansible. Esto es especialmente útil cuando se trabaja en entornos colaborativos o se almacena el código en repositorios públicos.

Conceptos Clave

  • Cifrado y Descifrado: Proceso de convertir datos legibles en un formato codificado y viceversa.
  • Contraseña de Vault: Clave utilizada para cifrar y descifrar los datos.
  • Archivos Vault: Archivos que contienen datos cifrados.

Instalación y Configuración

Ansible Vault viene incluido con Ansible, por lo que no es necesario instalarlo por separado. Sin embargo, es importante asegurarse de que Ansible esté correctamente instalado y actualizado.

$ ansible --version

Comandos Básicos de Ansible Vault

Crear un Archivo Vault

Para crear un archivo Vault, se utiliza el comando ansible-vault create. Este comando abrirá un editor de texto donde se pueden ingresar los datos sensibles.

$ ansible-vault create secrets.yml

Ver un Archivo Vault

Para ver el contenido de un archivo Vault, se utiliza el comando ansible-vault view.

$ ansible-vault view secrets.yml

Editar un Archivo Vault

Para editar un archivo Vault, se utiliza el comando ansible-vault edit.

$ ansible-vault edit secrets.yml

Cifrar un Archivo Existente

Si ya tienes un archivo y deseas cifrarlo, puedes usar el comando ansible-vault encrypt.

$ ansible-vault encrypt existing_file.yml

Descifrar un Archivo Vault

Para descifrar un archivo Vault y convertirlo en un archivo de texto plano, se utiliza el comando ansible-vault decrypt.

$ ansible-vault decrypt secrets.yml

Cambiar la Contraseña de Vault

Para cambiar la contraseña utilizada para cifrar un archivo Vault, se utiliza el comando ansible-vault rekey.

$ ansible-vault rekey secrets.yml

Uso de Ansible Vault en Playbooks

Cifrado de Variables

Es común cifrar variables sensibles en los playbooks. Aquí hay un ejemplo de cómo se puede hacer:

  1. Crear un archivo de variables cifrado:
$ ansible-vault create vars.yml
  1. Incluir el archivo de variables en el playbook:
---
- name: Playbook con variables cifradas
  hosts: all
  vars_files:
    - vars.yml
  tasks:
    - name: Mostrar variable cifrada
      debug:
        msg: "{{ secret_variable }}"

Ejecución de Playbooks con Vault

Para ejecutar un playbook que contiene archivos Vault, se debe proporcionar la contraseña de Vault. Esto se puede hacer de varias maneras:

  1. Interactivamente: Ansible solicitará la contraseña al ejecutar el playbook.
$ ansible-playbook playbook.yml --ask-vault-pass
  1. Archivo de Contraseña: Se puede proporcionar un archivo que contenga la contraseña.
$ ansible-playbook playbook.yml --vault-password-file .vault_pass.txt

Ejercicio Práctico

Ejercicio 1: Crear y Usar un Archivo Vault

  1. Crear un archivo Vault: Crea un archivo Vault llamado secrets.yml que contenga una variable llamada secret_password.
$ ansible-vault create secrets.yml

Contenido de secrets.yml:

secret_password: "my_secret_password"
  1. Escribir un Playbook: Escribe un playbook que use la variable secret_password y la muestre en la salida.
---
- name: Playbook con variable cifrada
  hosts: localhost
  vars_files:
    - secrets.yml
  tasks:
    - name: Mostrar contraseña secreta
      debug:
        msg: "La contraseña secreta es: {{ secret_password }}"
  1. Ejecutar el Playbook: Ejecuta el playbook y proporciona la contraseña de Vault cuando se te solicite.
$ ansible-playbook playbook.yml --ask-vault-pass

Solución

  1. Crear el archivo secrets.yml:
$ ansible-vault create secrets.yml
  1. Contenido de secrets.yml:
secret_password: "my_secret_password"
  1. Escribir el playbook playbook.yml:
---
- name: Playbook con variable cifrada
  hosts: localhost
  vars_files:
    - secrets.yml
  tasks:
    - name: Mostrar contraseña secreta
      debug:
        msg: "La contraseña secreta es: {{ secret_password }}"
  1. Ejecutar el playbook:
$ ansible-playbook playbook.yml --ask-vault-pass

Conclusión

Ansible Vault es una herramienta poderosa para gestionar datos sensibles de manera segura en tus proyectos de Ansible. Con los comandos básicos y las prácticas recomendadas, puedes asegurarte de que tus contraseñas y claves estén protegidas. En el siguiente módulo, exploraremos cómo optimizar tus playbooks para mejorar su rendimiento y eficiencia.

© Copyright 2024. Todos los derechos reservados