eugene0707.merge_custom_vars
merge_custom_vars
Lade Variablen-Dateien mit anpassbarer Priorität und führe tiefes Mergen von Hashes durch. Standardmäßig werden Variablen-Dateien aus dem rpi_vars-Ordner in den Rollen, die im Playbook enthalten sind, geladen. Dabei haben die rpi_vars im Playbook-Verzeichnis eine höhere Priorität und die höchste Priorität haben die rpi_vars in der Inventarliste. Du kannst deine eigene Liste von Variablen-Dateien/Ordnern zum Mergen und deren Priorität festlegen.
Anforderungen
Keine besonderen Anforderungen.
Rollenspezifische Variablen
rpi_dir: Name des Variablen-Ordners, der gemischt werden soll. Standardmäßig ist es rpi_vars.
rpi_files: Variablen-Dateien oder -Ordner, die gemischt werden sollen. Die Reihenfolge der Elemente im Array bestimmt deren Priorität. Standardmäßig:
- "{{ rpi_role_dirs }}" # rpi_vars-Ordner aus Rollen, die im Playbook enthalten sind. Rollen können im Playbook (lokal) oder an einem anderen Ort definiert in der Variable roles_path platziert werden ("shared" in meinem Fall).
- "{{ rpi_playbook_dirs }}" # rpi_vars-Ordner im Playbook
- "{{ rpi_inventory_dirs }}" # rpi_vars-Ordner im Inventar-Ordner. Wenn deine Inventare in ihren eigenen Ordnern abgelegt sind (in meinem Fall).
Diese Rolle erledigt zwei Hauptaufgaben:
- Alle Hashes in rpi_files (yaml, json) werden tiefgehend zusammengeführt und in den tmp-Ordner geschrieben.
- Das resultierende yml mit den zusammengeführten Variablen wird durch die include_vars-Aufgabe geladen.
Abhängigkeiten
Ansible 2+
Beispiel Playbook
Das Hauptkonzept dieser Rolle neben dem Mergen von Hashes besteht darin, gemeinsame Variablen zu erstellen, die rollenübergreifend verwendet werden können, mit präziseren Angaben auf der Playbook- und Inventarebene. Füge diese Rolle an erster Stelle im Playbook hinzu, wenn du sie verwendest.
Während ich noch nicht herausgefunden habe, wie man das Vault-Passwort aus einem benutzerdefinierten Modul erhält, können verschlüsselte Variablen durch ein Lookup-Plugin in den Mergeschacht importiert werden, zum Beispiel:
---
secret:
key: "{{ lookup('file', '{{ playbook_dir }}/files/vault.encrypted.key.txt') }}"
Lizenz
GPLv2
Autoreninformation
Evgeniy Kondrashov https://github.com/eugene0707
Load vars files with customizable precedence and deep merge hashes within.
ansible-galaxy install eugene0707.merge_custom_vars