[ansible] Mit dictonaries arbeiten

Wichtig: getestet mit Ansible 2.4.2.0

Wenn man in Ansible Variablen deklarieren möchte, kann es der Übersichtlichkeit halber interessant sein, diese in Dictionaries anzulegen. Beispielsweise wenn man mit mehreren Umgebungen arbeitet  – Test/vProd/Prod – und Fachanwendungen auf Server „taggen“ möchte. Sprich eine List wo steht auf welchen Server die einzelnen Fachanwendungen installiert sind.

Deklaration

Ort der „vars“-Datei

wir deklarieren eine neue Variablen-Datei
<ansible-root>/vars/main.yml
oder mit Rollen
<ansible-root>/roles/<role-name>/vars/main.yml

Alternativ:

Inhalt der Datei

Auf diese Weise kann man ein „Host-Tagging“ bewerkstelligen.
Sprich man deklariert, auf welchen Servern eine bestimmte Anwendung installiert ist, und führt hier entsprechende Task’s aus.

Anwendung

Einen Parameter abfragen

Ergebnis:

Parameter und Host abfragen

Jetzt wird es ein wenig komplizierter, wir wollen einen Parameter und einen bestimmten Server abfragen.
Achtung! Eignet sich nur wenn man einen bestimmten Server sucht! Nicht für eine Gruppe von Servern.

Tipp: Variablen werden ohne Klammern deklariert

 

Alle hosts ausgeben

Ergebnis:

Loop over dictonary

Um mit allen Werten zu arbeiten bietet sich folgende Vorgehensweise an:

Ergebnis:

Task auf host „taggen“

Auf diese Weise kann man deklarieren, dass ein Task auf dem aktuellem Server nur ausgeführt wird, wenn er in einer entsprechenden Liste deklariert wurde.

Oder auf Klardeutsch:
Wenn host_a NICHT in den hosts von anwendung_a aufgelistet ist, würde der Task nicht auf diesem Host ausgeführt werden.

Zum nachlesen:

Hier wird das gut erklärt finde ich:
https://stackoverflow.com/questions/31566568/double-loop-ansible

Kommentar schreiben

0 Kommentare.

Kommentar schreiben


Hinweis - Du kannst dies benutzenHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

<\/body>