2014-12-31 1 views
6

Ich habe spezifische Variablen, die basierend auf Schnittmengen von Gruppen in ansible angewendet werden müssen. Wenn sich beispielsweise ein Server sowohl im Startmodus befindet als auch über die Website-Funktion verfügt, kann ich ihn in einem Playbook mit tag_function_website:&tag_mode_prod angeben. Das ist großartig, aber was mache ich, wenn ich eine Gruppen-Vars-Datei für diesen Schnittpunkt erstellen muss, der über Schnittpunkt-spezifische Variablen verfügt (dh ich möchte nicht dieselbe Db für Dev und Prod verwenden, aber ich habe auch verschiedene DBs für Boxen mit verschiedenen Funktionen). Ich kann kein kaufmännisches Und-Zeichen in einem Dateinamen verwenden. Wie erstelle ich eine vars-Datei für Gruppen, um nur die Felder anzugeben, die meine gewünschte Schnittmenge treffen?Geben Sie den Schnittpunkt der Gruppen als group_vars-Datei in ansible an

+0

haben Sie jemals eine Lösung dafür gefunden? –

Antwort

1

Vielleicht beantworte ich deine Frage nicht wirklich, sondern teile einige meiner Erfahrungen mit Ansible.

Zunächst sollten Sie separate Inventare für verschiedene Umgebungen in Betracht ziehen (Sie haben Dev und Prod genannt). Ich habe auch anfänglich mit Einzelinventar angefangen und diesen Ratschlag fand ich absolut erstaunlich: How to Differentiate Staging vs Production.

Die Datenbanken, die Sie als Beispiel verwendet haben, würden wahrscheinlich besser durch separate Variable (d. H. HrDb und acctDb) verwiesen werden.

+0

Anstatt nur einen Link zu veröffentlichen, geben Sie bitte den relevanten Text direkt in Ihre Antwort ein. Wenn diese Verbindung jemals aufhört zu funktionieren, wird Ihre Antwort viel weniger nützlich sein. – Mxx

+0

tue ich, aber das ist alles durch ec2.py mit dynamischen Inventaren in ec2 wie von Ansible docs empfohlen. Ich brauche immer noch einen Weg, um an der Kreuzung zu unterscheiden. – Eli

0

Ich hatte ein ähnliches Ziel, und ich konnte mir etwas einfallen lassen, das zu funktionieren scheint. Dies beruht auf Marcins Beobachtung, aber ich werde einige Details ausarbeiten. Wenn Sie die Bestände zwischen prod und stg aufgeteilt, dann können Sie folgendes tun ...

In Ihrem prod Inventar definieren die Gruppen:

[prod_website] 
#hosts go here... 

[website:children] 
prod_website 

Dann in Ihrem stg Inventar, definieren die analoge Gruppen:

Dann würden Sie in Ihrer group_vars die Gruppenkreuzung vars unter prod_website und stg_website erstellen. Wenn Sie ansible aufrufen und angeben, welches Inventar verwendet werden soll, werden die gewünschten vars der Gruppenkreuzung herangezogen. In Ihren Playbooks können Sie jedoch weiterhin auf die allgemeine Website-Gruppe verweisen, die sowohl in prod als auch in stg vorhanden ist.

Verwandte Themen