So verwenden Sie Schleifen in Ansible

So verwenden Sie Schleifen in Ansible
Bei der Arbeit mit Code müssen Sie möglicherweise mehrmals einen Codeblock ausführen. Das Schreiben des gleichen Codeblocks immer wieder ist überflüssig und gilt als schlechtes Design. Hier kommen Schleifen herein.

Schleifen sind Befehle oder Anweisungen, die so eingestellt sind, dass sie eine bestimmte Anzahl von Male gemäß den Benutzeranforderungen wiederholen sollen. Schleifen ermöglichen einen besseren Steuerfluss in Ihren Skripten und entfernen Sie die Gesamtreduktion von ihnen.

Ansible verfügt auch über mehrere Methoden zur Codeblockung von Code -Blöcken. Dieser Leitfaden soll Ihnen helfen, etwas über Schleifen in Ansible zu lernen. Wir werden die Grundlagen des Schleifens in Ansible zusammen mit der Syntax und geeigneten Beispielen abdecken.

Lassen Sie uns jedoch einen Blick auf Schleifen in Ansible werfen.

Schlüsselwörter für Schleifen in Ansible

Ansible verwendet die folgenden Schlüsselwörter für seine Schleifenstrukturen:

  • "Schleife"
  • "mit_"
  • "bis"

Wie der Name schon sagt, ist „Schleife“ der Befehl zum Implementieren von Schleifen in Codeblöcken.

Ähnlich wie bei "Loop" haben Sie "mit" mit_ ". In diesem Befehl müssen Sie es mit einem Lookup -Plugin zur Verfügung stellen. Es wird empfohlen, mit _* anstelle der Schleife zu verwenden, wenn Such -Plugins beteiligt sind.

Mit "Bis" können Sie eine Aufgabe ausführen, bis der erforderliche Zustand erfüllt ist. Es ist am nächsten am nächsten Zustand im Steuerfluss.

Nachdem Sie eine Vorstellung von den Schlüsselwörtern für Loops haben, können Sie erfahren, wie Sie sie in Code implementieren können.

Standardschleifen in Ansible

Wir werden zunächst diskutieren, wie Standardschleifen in Ansible implementiert werden können. Für Standardschleifen verwenden wir das Schlüsselwort "With_".

Dieses Beispiel zeigt, wie wir Loops verwenden können, um Benutzer hinzuzufügen.

- Name: Mehrere Benutzer hinzufügen
Benutzer:
Name: "item"
Zustand: Gegenwart
Gruppen: "Rad"
With_items:
- VM1
- VM2

Jetzt wäre der nächste Schritt, das Spielbuch auszuführen. Sie können dies mit Hilfe des folgenden Befehls im Linux -Terminal tun:

Ansible-Playbook-Testbuch.YML

Hier ist „Artikel“ der Suchbegriff. "With_Item" hat zwei Hosts, VM1 bzw. VM2. Die Schleife macht dasselbe wie der folgende Code:

- Name: Benutzer VM1 hinzufügen
Benutzer:
Name: "VM1"
Zustand: Gegenwart
Gruppen: "Rad"
- Name: Benutzer VM2 hinzufügen
Benutzer:
Name: "VM2"
Zustand: Gegenwart
Gruppen: "Rad"

Wie Sie sehen können, können wir mit „With_Item“ Redundanz aus unserem Code entfernen. Indem wir mehr Benutzer unter "With_items:" hinzuzufügen, können wir mehrere Benutzer nach Bedarf hinzufügen.

Das nächste Beispiel wird behandeln, wie verschachtelte Schleifen in Ansible ausgeführt werden können.

Verschachtelte Schleifen in Ansible

Mit Ansible können Sie verschachtelte Schleifen in seinen Skripten implementieren. Ein Beispiel für eine solche Schleife ist unten angegeben.

- Name: Bietet Benutzern Zugriff auf Datenbanken
MySQL_USER:
Name: "item [0]"
priv: "item [1].*:ALLE"
append_privs: Ja
Passwort: "Foo"
With_nested:
- ['Linuxuser1', 'Linuxuser2']
- ["Kunde", "Mitarbeiter", "Anbieter"]

Alternativ können Sie denselben Code mit "Loop" wie folgt schreiben:

- Name: Bietet Benutzern Zugriff auf Datenbanken
Gemeinschaft.Mysql.MySQL_USER:
Name: "item [0]"
priv: "item [1].*:ALLE"
append_privs: Ja
Passwort: "Foo"
Schleife: "['Linuxuser1', 'LinuxUser2'] | Product (['Client', 'Mitarbeiter', 'Provider']) | List"

Die Benutzer erhalten nacheinander Zugriff auf alle Datenbanken. Wie bereits erwähnt, ist es einfacher zu verstehen.

Schauen wir uns einige andere Beispiele an, die die Fähigkeit von Ansible hervorheben.

Mit Ansible über Hashes iterieren

Mit Ansible können Sie eine Liste von Hashes überschreiten. Dies ist aus dem unten angegebenen Beispiel zu sehen.

Nehmen wir an, Sie haben eine Liste von Benutzern wie folgt deklariert.

Benutzer:
VM1:
Name: virtuelle Maschine 1
Serie: 00000001
VM2:
Name: Virtuelle Maschine 2
Serie: 00000002

Um alle Namen und Serien zu drucken, führen Sie das folgende Skript aus.

Aufgaben:
- Name: Benutzerinformationen drucken
debuggen:
MSG: "Benutzer Element.Key ist item.Wert.Name (Element.Wert.serial) "
With_Dict: "Benutzer"

Dadurch werden die Benutzernamen bzw. Serien drucken. Wenn Sie mehr Benutzer in das Panel „Benutzer:“ hinzufügen, können Sie mehr Benutzer drucken, ohne den Code erneut schreiben zu müssen.

Verwenden von Schleifen für parallele Datensätze

Sie können auch Schleifen für parallele Datensätze verwenden. Dies wird im folgenden Beispiel demonstriert:

Nehmen wir an, Sie haben die folgenden Daten:

Alphabete: ['A', 'B', 'C', 'D']

Num: [2, 4, 6, 8]

Sie können diese Befehle wie folgt schleifen:

Aufgaben:
- debuggen:
msg: "item.0 und item.1 "
With_together:
- "Alphabets"
- "num"

Der obige Code läuft beide Datensätze zusammen als (a, 2), (b, 4) usw.

Zufällige Auswahlschleifen

Eines der Funktionen, die mit den Loops "With_" geliefert werden, ist "Random_Choice".

Wie der Name schon sagt, wird die Feature Random Choice verwendet, um Elemente zufällig aus einem bestimmten Satz von Anweisungen auszuwählen.

Dieses Beispiel zeigt, wie Sie Schleifen für die Auswahl einer Aktion aus einer bestimmten Liste von Zeichenfolgen erstellen können.

- debuggen:
msg: "item"
With_Random_Choice:
- "Aktion ausführen 1"
- "Aktion ausführen 2"
- "Aktion ausführen 3"
- "Aktion ausführen 4"

Hier ist die Zeichenfolge „Action ausführen“ willkürlich und kann durch alles ersetzt werden. Der Befehl with_random_choice würde aus der angegebenen Liste der Aktionen zufällig auswählen.

"Bis" Schleifen Beispiele

In diesem Abschnitt des Handbuchs geht es um die Syntax "bis" bis zur Schleife.

Wie bereits erwähnt, wiederholt der Befehl „bis“ eine bestimmte Reihe von Anweisungen, bis er eine bestimmte Bedingung erfüllt.

Hier ist ein Beispiel für die „bis“ Schleife in Aktion.

Shell:/usr/bin/foo

Register: Ergebnis

Bis: Ergebnis.Stdout.Find ("Alle Systeme bereit") != -1

Wiederholungen: 10

Verzögerung: 7

Dies ist ein Beispiel für eine rekursive Schleife. Der obige Codeblock wird weiter ausgeführt, bis die Shell „alle Systeme bereit“ als Textausgabe empfängt. Wenn dies nicht der Fall ist, wird es nach dem 10 -fachen Laufen aufhören, da die angegebenen Wiederholungen „10“ sind.

Die Verzögerung entspricht der Verzögerung in Sekunden. Standardmäßig ist es auf 5 festgelegt.

Abschluss

Dies war eine Anleitung, wie Sie Schleifen in Ansible verwenden können. Wir haben die Grundlagen von Loops und ihre Syntax in ansible behandelt und deren Verwendung über verschiedene Beispiele gezeigt. Damit hoffen wir, dass Sie Ihren Prozessen mit Ansible einen Schritt näher sind, um Ihre Prozesse zu automatisieren.