eugene0707.merge_custom_vars
merge_custom_vars
Charger des fichiers de variables avec une priorité personnalisable et fusionner profondément les hachages qui s'y trouvent. Par défaut, les fichiers de variables sont chargés depuis le dossier rpi_vars dans les rôles inclus dans le playbook, en étant remplacés par rpi_vars du répertoire du playbook, et la priorité la plus élevée a les rpi_vars de l'inventaire. Vous pouvez définir votre propre liste de fichiers/dossiers de variables à fusionner et leur priorité.
Exigences
Aucune exigence spéciale.
Variables de Rôle
rpi_dir : nom du dossier de variables à fusionner. Par défaut, c'est rpi_vars.
rpi_files : fichiers ou dossiers de variables à fusionner. L'ordre des éléments dans le tableau détermine leur priorité. Par défaut :
- "{{ rpi_role_dirs }}" # dossier rpi_vars des rôles inclus dans le playbook. Les rôles peuvent être placés à l'intérieur du playbook (local) ou ailleurs défini dans la variable de configuration roles_path ("shared" dans mon cas).
- "{{ rpi_playbook_dirs }}" # dossier rpi_vars dans le playbook
- "{{ rpi_inventory_dirs }}" # dossier rpi_vars dans le dossier d'inventaire. Si vos inventaires sont placés dans leurs propres dossiers (mon cas).
Ainsi, ce rôle effectue deux actions principales :
- Tous les hachages contenus dans rpi_files (yaml, json) sont fusionnés en profondeur et écrits dans un dossier temporaire.
- Le fichier yml résultant avec les variables fusionnées est chargé par la tâche include_vars.
Dépendances
Ansible 2+
Exemple de Playbook
Le concept principal de ce rôle, en plus de la fusion des hachages, est de créer des variables communes qui peuvent être utilisées à travers les rôles, avec une précision accrue au niveau du playbook et de l'inventaire. Incluez ce rôle en première position dans le playbook si vous l'utilisez.
Bien que je n'ai pas encore trouvé comment obtenir le mot de passe du coffre à partir d'un module personnalisé, les variables chiffrées peuvent être importées dans le "panier" de fusion via un plugin de recherche, par exemple :
---
secret:
key: "{{ lookup('file', '{{ playbook_dir }}/files/vault.encrypted.key.txt') }}"
Licence
GPLv2
Informations sur l'Auteur
Evgeniy Kondrashov https://github.com/eugene0707
Load vars files with customizable precedence and deep merge hashes within.
ansible-galaxy install eugene0707.merge_custom_vars