GNU/Linux >> LINUX-Kenntnisse >  >> Linux

RHCE Ansible Series #5:Ansible Loops

Manchmal möchten Sie eine Aufgabe möglicherweise mehrmals wiederholen. Beispielsweise möchten Sie möglicherweise mehrere Benutzer erstellen, mehrere Dienste starten/stoppen oder den Eigentümer mehrerer Dateien auf Ihren verwalteten Hosts ändern.

In diesem Tutorial erfahren Sie, wie Sie Ansible-Schleifen verwenden, um eine Aufgabe mehrmals zu wiederholen, ohne die gesamte Aufgabe immer wieder neu schreiben zu müssen.

Bevor Sie sich Schleifen in Ansible ansehen, hoffe ich, dass Sie andere Kapitel in dieser Ansible-Tutorial-Reihe gelesen haben. Sie sollten das Konzept von Ansible-Playbooks kennen, sich der Ad-hoc-Befehle bewusst sein und die mit Ansible verbundene grundlegende Terminologie wie Listen, Wörterbücher usw. kennen.

Es wird auch geschätzt, die Grundlagen von YAML zu kennen.

Listen durchlaufen

Ansible verwendet die Schlüsselwörter loop um über die Elemente einer Liste zu iterieren. Lassen Sie uns zur Demonstration ein sehr einfaches Playbook mit dem Namen print-list.yml erstellen das zeigt Ihnen, wie Sie die Elemente in einer Liste drucken:

[[email protected] plays]$ cat print-list.yml 
---
- name: print list
  hosts: node1
  vars:
    prime: [2,3,5,7,11]
  tasks:
    - name: Show first five prime numbers
      debug:
        msg: "{{ item }}"
      loop: "{{ prime }}"

Beachten Sie, dass ich das Element verwende Variable mit Ansible-Schleifen. Die Aufgabe würde fünfmal ausgeführt, was der Anzahl der Elemente in der Primzahl entspricht aufführen.

Beim ersten Durchlauf das Element Variable wird auf das erste Element im Primzahl-Array gesetzt (2). Beim zweiten Durchlauf wird die Item-Variable auf das zweite Element im Prime-Array (3) gesetzt und so weiter.

Fahren Sie fort und führen Sie das Playbook aus, um alle Elemente von Prime anzuzeigen angezeigte Liste:

[[email protected] plays]$ ansible-playbook print-list.yml 

PLAY [print list] **************************************************************

TASK [Gathering Facts] *********************************************************
ok: [node1]

TASK [Show first five prime numbers] *******************************************
ok: [node1] => (item=2) => {
    "msg": 2
}
ok: [node1] => (item=3) => {
    "msg": 3
}
ok: [node1] => (item=5) => {
    "msg": 5
}
ok: [node1] => (item=7) => {
    "msg": 7
}
ok: [node1] => (item=11) => {
    "msg": 11
}

PLAY RECAP *********************************************************************
node1                      : ok=2    changed=0    unreachable=0    failed=0

Jetzt wenden Sie Schleifen auf eine reale Anwendung an. Beispielsweise können Sie eine add-users.yml erstellen Playbook, das mehrere Benutzer auf allen Hosts in den dbservers hinzufügen würde Gruppe:

[[email protected] plays]$ cat add-users.yml 
---
- name: Add multiple users
  hosts: dbservers
  vars:
    dbusers:
      - username: brad
        pass: pass1
      - username: david
        pass: pass2
      - username: jason
        pass: pass3
  tasks: 
    - name: Add users
      user:
        name: "{{ item.username }}"
        password: "{{ item.pass | password_hash('sha512') }}"
      loop: "{{ dbusers }}"

Ich habe zuerst einen dbusers erstellt list, die im Grunde eine Liste von Hashes/Wörterbüchern ist. Ich habe dann den Benutzer verwendet Modul zusammen mit einer Schleife um die Benutzer hinzuzufügen und die Passwörter für alle Benutzer in den dbusers festzulegen Liste.

Beachten Sie, dass ich auch die gepunktete Notation item.username verwendet habe und item.pass um auf die Schlüsselwerte in den Hashes/Wörterbüchern der dbusers zuzugreifen Liste.

Es ist auch erwähnenswert, dass ich den password_hash('sha512') verwendet habe filtern, um die Benutzerpasswörter mit dem sha512 zu verschlüsseln Hashalgorithmus als Benutzer -Modul würde das Setzen von unverschlüsselten Benutzerkennwörtern nicht zulassen.

RHCE-Prüfungstipp:Sie haben während Ihrer Prüfung Zugriff auf die Seite docs.ansible.com. Es ist eine sehr wertvolle Ressource, insbesondere im Abschnitt „Häufig gestellte Fragen“; finden Sie zahlreiche How-to-Fragen mit Antworten und Erklärungen.

Lassen Sie uns nun die add-users.yml ausführen Spielbuch:

Lesen Sie die ganze Geschichte

Der Rest des Artikels ist nur für LHB-Mitglieder verfügbar. Sie können sich jetzt KOSTENLOS anmelden, um den Rest dieses Artikels zusammen mit dem Zugriff auf alle Beiträge nur für Mitglieder zu lesen. Außerdem abonnieren Sie unseren zweiwöchentlichen Linux-Newsletter.

AbonnierenSie haben bereits ein Konto?Melden Sie sich an
Linux
  1. Dekonstruktion eines Ansible-Playbooks

  2. YAML für Ansible verstehen

  3. RHCE Ansible Series #8:Verschlüsseln von Inhalten mit Ansible Vault

  4. RHCE Ansible Series #7:Jinja2-Vorlagen

  5. RHCE Ansible Series #6:Entscheidungsfindung in Ansible

So verwenden Sie Schleifen im Ansible Playbook

Eine Einführung in Ansible-Fakten

RHCE Ansible Series #2:Ausführen von Ad-hoc-Befehlen

RHCE Ansible Serie Nr. 1:Sag Hallo zu Ansible

RHCE Ansible Series #3:Ansible Playbooks

RHCE Ansible Series #12:Ansible-Fehlerbehebung