Recherche…


Remarques

Ansible propose Vault (à ne pas confondre avec HashiCorp Vault !) Pour gérer le cryptage des données sensibles. Vault vise principalement à chiffrer toutes les données structurées telles que les variables, les tâches et les gestionnaires.

Cryptage de données structurées sensibles

Tout d'abord, créez un fichier de clés, par exemple vault_pass_file , qui contient idéalement une longue séquence de caractères aléatoires. Dans les systèmes Linux, vous pouvez utiliser pwgen pour créer un fichier de mot de passe aléatoire:

pwgen 256 1 > vault_pass_file

Ensuite, utilisez ce fichier pour chiffrer les données sensibles, par exemple, groups_vars/group.yml :

ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-vault encrypt group_vars/group.yml

A partir de maintenant, pour lancer un playbook, vous avez besoin du vault_pass_file :

ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-playbook -i inventories/nodes my-playbook.yml 

Notez que vous pouvez également utiliser l' --vault-password-file vault_pass_file au lieu de définir la variable d'environnement ANSIBLE_VAULT_PASSWORD_FILE .

Pour éditer ou déchiffrer le secret sur le disque, vous pouvez utiliser respectivement ansible-vault edit et ansible-vault decrypt respectivement.

Utilisation de canaux de recherche pour déchiffrer des données chiffrées non structurées

Avec Vault, vous pouvez également crypter des données non structurées, telles que des fichiers de clés privées, tout en étant en mesure de les décrypter dans votre jeu avec le module de lookup .

---

- name: Copy private key to destination
  copy:
    dest=/home/user/.ssh/id_rsa
    mode=0600
    content=lookup('pipe', 'ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-vault view keys/private_key.enc')

Utilisation de local_action pour déchiffrer les modèles chiffrés dans un coffre

Vous pouvez exécuter un jeu qui repose sur des modèles chiffrés à l'aide d'un local_action en utilisant le module local_action .

---

- name: Decrypt template
  local_action: "shell {{ view_encrypted_file_cmd }} {{ role_path }}/templates/template.enc > {{ role_path }}/templates/template"
  changed_when: False

- name: Deploy template
  template:
    src=templates/template
    dest=/home/user/file

- name: Remove decrypted template
  local_action: "file path={{ role_path }}/templates/template state=absent"
  changed_when: False

S'il vous plaît noter le changed_when: False . Ceci est important dans le cas où vous exécutez des tests d'idempotence avec vos rôles de réponse - sinon, chaque fois que vous exécutez le livre de jeu, un changement est signalé. Dans group_vars/all.yml vous pouvez définir une commande globale decrypt pour la réutiliser, par exemple, view_encrypted_file_cmd .

group_vars / all.yml

---

view_encrypted_file_cmd: "ansible-vault --vault-password-file {{ lookup('env', 'ANSIBLE_VAULT_PASSWORD_FILE') }} view"

Maintenant, lorsque vous exécutez une lecture, vous devez définir la variable d'environnement ANSIBLE_VAULT_PASSWORD_FILE pour qu'elle pointe vers votre fichier de mot de passe de coffre-fort (idéalement avec un chemin absolu).



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow