Ansible - Chiffrer données sensibles

Ansible Vault est un outil intégré à Ansible qui permet de chiffrer des fichiers contenant des données sensibles, comme des mots de passe ou des clés privées

Chiffrer des données avec Ansible-Vault et déployer un playbook

Créer un fichier chiffré

Lors de la création d’un fichier chiffré, Ansible Vault demandera de fournir un mot de passe pour chiffrer le fichier :

# ansible-vault create /path/encrypted.yml

Exemple de contenu :

# encrypted.yml (chiffré)

user_john_passwd: 1337H4X0R
variable_secret: 123456
database_password: 5up3rM07d3p455
api_key: cle_api_secret
private_key: |
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAwPpxoCkA/+JnWcEBd...
...
...
...
-----END RSA PRIVATE KEY-----

Pour le modifier le not de passe sera également demandé :

# ansible-vault edit /path/encrypted.yml

Si on souhaite afficher le fichier, le contenu sera chiffré :

Configurer

Dans le fichier de configuration de votre application se trouve tous les paramètres nécessaires à son fonctionnement dont les mots de passe. Pour ne pas les écrire en dur, il est possible de les appeller sous forme de variable dont le contenu sera substitué lors de la lecture du fichier encrypted :

# config.yml.j2

database:
password: "{{ database_password }}"

api:
key: "{{ api_key }}"

private_key: "{{ private_key }}"

L’extension de fichier .j2 est un modèle Jinja2 qui est un moteur de modèle pour Python, Ansible l’utilise également pour le rendu de modèles dans ses playbooks.

Créer et lancer le playbook

Créer un fichier deploy.yml, c’est ici que l’on appelle le fichier encrypted.yml :

---
- name: Déployer l'application avec des variables chiffrées
hosts: vos_hôtes
become: yes

vars_files:
- /chemin/vers/encrypted.yml

tasks:
- name: Copier le fichier de configuration avec les variables chiffrées
template:
src: config.yml.j2 # Modèle du fichier de configuration
dest: /chemin/vers/application/config.yml
notify: Redémarrer l'application

handlers:
- name: Redémarrer l'application
systemd:
name: nom_de_votre_application
state: restarted

Pour ensuite lancer le playbook qui va appeller le fichier chiffré :

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

Documentation

https://docs.ansible.com/ansible/

Remerciements

Quentin E.

Merci à Quentin E.


> Partager <