2016-12-05 10 views
2

Ich bin auf der Suche nach einer eleganten Lösung für eine Form des gemeinsamen Inventars, das für Variablen verwendet werden kann, die ungeachtet des aktuellen Inventars bestehen bleiben.Ansible Shared Inventory

Beispiel: Es gibt mehrere Vorräte Umgebungen definieren:

/inventory-live/ 
/inventory-staging/ 
/inventory-test/ 
/inventory-develop/ 

Jede dieser individualisiert eine Belastung von Umwelt beschreiben. Einige Inhalte wie Lizenzschlüssel, Benutzeranmeldeinformationen usw. sind jedoch nicht umgebungsspezifisch.

Derzeit werden diese Informationen manuell synchronisiert, indem die */group_vars/all in jedem Inventar aktualisiert wird.

Aber gibt es eine elegantere Lösung, die das an einem zentralen Ort hält und nicht dieselben Informationen zwischen den Inventaren wiederholt?

+1

Wenn Sie Variablen nicht abhängig von der Bestandsaufnahme, warum Sie nicht über eine regelmäßige variabel nutzen Datei? – techraf

+0

Das habe ich vorher gemacht. Im Laufe der Zeit habe ich erkannt, dass die Trennung von Konfiguration in das Inventar und Aufgaben in die Rollen eine gute Konvention ist. Das Festhalten an Konventionen erleichtert anderen, die Ihre Arbeit nutzen müssen. Daher versuche ich eine bessere Lösung zu finden. –

Antwort

1

Wenn Sie alle diese Inventare mit einem einzelnen Playbook verwenden, können Sie group_vars/all in Ihr Playbook-Verzeichnis platzieren - Ansible liest Host- und Gruppen-Vars nicht nur aus Inventardateien, sondern auch aus dem aktuellen Playbook-Verzeichnis.

Wenn Sie diese Vorräte mit mehreren Spielbücher verwenden zu können, gemeinsames Verzeichnis und Symlinks aus verschiedenen Inventare erstellen:

/inventory-common/common_vars.yml 
/inventory-live/group_vars/all/common.yml -> ../../../inventory-common/common_vars.yml 
/inventory-test/group_vars/all/common.yml -> ../../../inventory-common/common_vars.yml 
+0

Das funktioniert mit group_vars. Aus irgendeinem Grund funktioniert es nicht mit '/ inventory-live/host_vars/localhost/common.yml' Die Datei wird in diesem Szenario nicht gelesen, aber'/inventory-live/host_vars/localhost/vars.yml' funktioniert . Ich kann keine Dokumentation zu diesem Verhalten finden (Ansible 2.2), aber die angegebene Antwort funktioniert gut genug. –

Verwandte Themen