Cómo usar Ansible Vault en Playbooks para proteger datos confidenciales - Parte 10


A medida que utiliza Ansible, es posible que deba ingresar información confidencial o secreta en los libros de jugadas. Esto incluye claves públicas y privadas SSH, contraseñas y certificados SSL, por mencionar solo algunos. Como ya sabemos, es una mala práctica guardar esta información sensible en texto plano por razones obvias. Esta información debe mantenerse bajo llave porque solo podemos imaginar lo que sucedería si los piratas informáticos o usuarios no autorizados se apoderaran de ella.

Afortunadamente, Ansible nos proporciona una función útil conocida como Ansible Vault. Como sugiere el nombre, Ansible Vault ayuda a proteger información secreta vital, como hemos comentado anteriormente. Ansible Vault puede cifrar variables, o incluso archivos completos y libros de jugadas YAML, como demostraremos más adelante. Es una herramienta muy útil y fácil de usar que requiere la misma contraseña para encriptar y desencriptar archivos.

Ahora profundicemos y tengamos una descripción general de las diversas operaciones que se pueden llevar a cabo utilizando la bóveda de Ansible.

Cómo crear un archivo cifrado en Ansible

Si desea crear un archivo de Playbook cifrado, simplemente use el comando ansible-vault create y proporcione el nombre del archivo como se muestra.

# ansible-vault create filename

Por ejemplo, para crear un archivo cifrado mysecrets.yml, ejecute el comando.

# ansible-vault create mysecrets.yml

A partir de entonces, se le pedirá una contraseña y, después de confirmarla, se abrirá una nueva ventana utilizando el editor vi donde podrá comenzar a escribir sus obras de teatro.

A continuación se muestra una muestra de información. Una vez que haya terminado, simplemente guarde y salga del libro de jugadas. Y eso es todo al crear un archivo cifrado.

Para verificar el cifrado del archivo, use el comando cat como se muestra.

# cat mysecrets.yml

Cómo ver un archivo cifrado en Ansible

Si desea ver un archivo cifrado, simplemente pase el comando ansible-vault view como se muestra a continuación.

# ansible-vault view mysecrets.yml

Una vez más, se le pedirá una contraseña. Una vez más, tendrás acceso a tu información.

Cómo editar un archivo cifrado en Ansible

Para realizar cambios en un archivo cifrado, utilice el comando de edición ansible-vault como se muestra.

# ansible-vault edit mysecrets.yml

Como siempre, proporcione la contraseña y luego proceda a editar el archivo.

Una vez que haya terminado de editar, guarde y salga del editor de vim.

Cómo cambiar la contraseña de Ansible Vault

En caso de que sienta la necesidad de cambiar la contraseña de la bóveda de Ansible, puede hacerlo fácilmente usando el comando ansible-vault rekey como se muestra a continuación.

# ansible-vault rekey mysecrets.yml

Esto le solicita la contraseña de la bóveda y luego le solicita que ingrese la nueva contraseña y luego la confirme.

Cómo cifrar un archivo no cifrado en Ansible

Suponga que desea cifrar un archivo no cifrado, puede hacerlo ejecutando el comando ansible-vault encrypt como se muestra.

# ansible-vault encrypt classified.txt

Más tarde, puede ver el archivo utilizando el comando cat como se indica a continuación.

Cómo descifrar un archivo cifrado

Para ver el contenido de un archivo cifrado, simplemente descifre el archivo usando el cifrado ansible-vault como se ilustra en el siguiente ejemplo.

# ansible-vault decrypt classified.txt

Cómo cifrar variables específicas en Ansible

Además, la bóveda de Ansible le otorga la capacidad de cifrar ciertas variables. Esto se hace usando el comando ansible-vault encrypt_string como se muestra.

# ansible-vault encrypt_string 

La bóveda de Ansible le pedirá la contraseña y luego le pedirá que la confirme. A continuación, escriba el valor de la cadena que desea cifrar. Finalmente, presione ctrl+d . A partir de entonces, puede comenzar a asignar el valor cifrado en un libro de jugadas.

Esto se puede lograr en una sola línea como se muestra a continuación.

# ansible-vault encrypt_string 'string' --name 'variable_name'

Cómo descifrar un archivo de libro de jugadas durante el tiempo de ejecución

Si tiene un archivo de libro de jugadas y desea descifrarlo durante el tiempo de ejecución, use la opción --ask-vault-pass como se ilustra.

# ansible-playbook deploy.yml --ask-vault-pass

Esto descifra todos los archivos que se utilizan en el libro de jugadas siempre que se hayan cifrado con la misma contraseña.

Las solicitudes de contraseña pueden ser molestas a veces. Estas indicaciones hacen que la automatización sea insostenible, especialmente cuando la automatización es clave. Para agilizar el proceso de descifrar los libros de jugadas durante el tiempo de ejecución, se recomienda tener un archivo de contraseña separado que contenga la contraseña de la bóveda de Ansible. Este archivo se puede pasar durante el tiempo de ejecución como se muestra.

# ansible-playbook deploy.yml --vault-password-file  /home/tecmint/vault_pass.txt

Esto nos lleva a la conclusión de este tema y de la serie de automatización Ansible. Esperamos que los tutoriales le hayan aportado conocimientos útiles sobre cómo puede automatizar tareas en varios servidores desde un sistema central.