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:

  1. Alle Hashes in rpi_files (yaml, json) werden tiefgehend zusammengeführt und in den tmp-Ordner geschrieben.
  2. 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

Über das Projekt

Load vars files with customizable precedence and deep merge hashes within.

Installieren
ansible-galaxy install eugene0707.merge_custom_vars
GitHub Repository
Lizenz
Unknown
Downloads
120
Besitzer