Ansible dispose d’un moyen pour chiffrer les mots de passe appelé le vault. Les vaults sont des fichiers, généralement disposés au sein de l’inventaire ansible qui sont entièrement chiffrés.
Dans un système entièrement industrialisé, on retrouve généralement ansible accompagné d’un SCM comme git afin de versionner le code et l’inventaire de l’infrastructure.L’utilisation d’un ou plusieurs vault files pour les mots de passe pose un souci, les variables chiffrées (nom et valeurs) sont tous au sein du vault et donc tous chiffrés. Lors d’un changement sur un mot de passe unitaire au sein d’une vault, le différentiel du SCM montrera un changement global de la vault, et non le changement unitaire du mot de passe.
Une fonction mal documentée existe heureusement dans Ansible et va vous permettre de retrouver un comportement similaire à hiera et eyaml-encrypt avec Puppet, il s’agit du tag !vault-encrypt renommé en !vault à partir d’Ansible 2.3.
Ce tag va vous permettre de ne chiffrer que le contenu d’une variable contenu au sein d’un fichier YAML complet non chiffré. Pour créer une variable chiffrée, on va comme pour les vaults utiliser le binaire ansible-vault.
echo -n "monpassword" | ansible-vault encrypt
Cette commande va chiffrer la chaîne monpassword avec l’utilitaire. Notez 2 choses:
echo -n "monpassword" | ansible-vault encrypt
Vault password:
$ANSIBLE_VAULT;1.1;AES256
65396363643837643539373866353262623930346635656566326362336635313334623239623663
3639366665656235623833633762336231393536326635370a376532663333653465366439636536
31656539633564363364666632366464613964616162376662623937656266666362663462636161
3162333838646537330a633033396635376438373036376166333938613061316539363439393662
6536
Maintenant que nous avons notre chaîne chiffrée, il n’y a plus qu’à l’utiliser quelque part dans notre inventaire ansible.
my_strong_password: !vault-encrypted |
$ANSIBLE_VAULT;1.1;AES256
65396363643837643539373866353262623930346635656566326362336635313334623239623663
3639366665656235623833633762336231393536326635370a376532663333653465366439636536
31656539633564363364666632366464613964616162376662623937656266666362663462636161
3162333838646537330a633033396635376438373036376166333938613061316539363439393662
6536
Vous pouvez désormais chiffrer et versionner vos passwords chiffrés proprement.