Cómo utilizar 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 manuales. 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 confidencial en texto sin formato 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 la consiguieran.
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 guías YAML, como demostraremos más adelante. Es una herramienta muy útil y fácil de usar que requiere la misma contraseña al cifrar y descifrar archivos.
Profundicemos ahora y tengamos una descripción general de las diversas operaciones que se pueden realizar utilizando Ansible Vault.
Cómo crear un archivo cifrado en Ansible
Si desea crear un archivo Playbook cifrado, simplemente utilice 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 continuación se le pedirá una contraseña y, tras confirmarla, se abrirá una nueva ventana utilizando el editor vi donde podrá empezar a escribir sus obras.
A continuación se muestra una muestra de cierta información. Una vez que haya terminado, simplemente guarde y salga del libro de jugadas. Y eso es todo cuando se crea 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 ansible-vault edit 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 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
Supongamos que desea cifrar un archivo no cifrado, puede hacerlo ejecutando el comando ansible-vault encrypt como se muestra.
ansible-vault encrypt classified.txt
Luego podrá ver el archivo usando 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 ansible-vault encrypt como se ilustra en el siguiente ejemplo.
ansible-vault decrypt classified.txt
Cómo cifrar variables específicas en Ansible
Además, Ansible Vault le otorga la posibilidad de cifrar ciertas variables. Esto se hace usando el comando ansible-vault encrypt_string como se muestra.
ansible-vault encrypt_string
Ansible Vault le solicitará 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 Playbook 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 hayan sido cifrados con la misma contraseña.
Las solicitudes de contraseña pueden resultar molestas a veces. Estas indicaciones hacen que la automatización sea insostenible, especialmente cuando la automatización es clave. Para agilizar el proceso de descifrado de playbooks 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. Luego, 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 de Ansible. Esperamos que los tutoriales le hayan aportado conocimientos útiles sobre cómo automatizar tareas en varios servidores desde un sistema central.