So verwenden Sie Tags in Ansible

So Verwenden Sie Tags In Ansible



Die Spiele, Rollen und Aufgaben sind die Ansible-Struktur, und diese Ansible-Struktur enthält das wichtige Attribut, das in Ansible Tags genannt wird. Wann immer wir ein Playbook in Ansible starten, können Sie die Befehle -tags und –skip tags verwenden, damit wir nur eine bestimmte Reihe von Aufgaben, Spielen und Rollen ausführen können. Wenn wir ein Playbook haben, das so viele Aufgaben enthält, wir aber nicht alle Aufgaben des Playbooks ausführen möchten, führen wir statt des gesamten Playbooks nur einige wenige Aufgaben aus, indem wir den Tag-Befehl im Ansible-Playbook verwenden.

Wir werden in diesem Thema Tags besprechen, die als eine der wichtigsten Facetten von Ansible dienen. Wir werden versuchen zu erklären, was Tags sind und wie Tags in Ansible funktionieren, da dies eine verwirrende Funktion der Ansible-Plattform ist.







Beispielsweise kann ein Playbook drei Verantwortlichkeiten enthalten: Installieren des Moduls, Konfigurieren und Überprüfen des Status des bereitgestellten Moduls, z. B. ob der Dienst ausgeführt wird und zugänglich ist. Da wir lediglich den Status der Module auf einigen Remote-Computern sehen müssen, verwenden wir in dieser Situation Ansible-Tags, anstatt alle Aufgaben im Playbook auszuführen. Es ermöglicht uns, eine bestimmte Operation exklusiv auszuführen, wodurch wir die Laufzeit reduzieren können, indem wir alle zugehörigen Aktivitäten in einem einzigen Playbook aufbewahren.



Voraussetzungen für die Verwendung der Tags in Ansible Playbook

Um die praktischen Beispiele in die Ansible-Software einzufügen, müssen wir die folgenden Anforderungen erfüllen.



Ein Ansible-Steuerungsserver muss erforderlich sein, damit er Änderungen vornimmt. Um den Tag-Parameter in der Ansible-Software nutzen zu können, müssen die lokalen Hosts mit ihnen kommunizieren. In diesem Fall verwenden wir den lokalen Host während der gesamten Ausführung als Ziel-Remote-Server. Wir werden Playbooks erstellen, Ansible-Tag-Befehle ausführen und die Ergebnisse auf Remote-Hosts vom Ansible-Controller-Gerät aus überwachen.





Wir werden versuchen, verschiedene Szenarien zu verwenden, um einige der Ansible-Tags zu untersuchen, damit der Lernende das Konzept der Tags in einem Ansible-Playbook leicht verstehen kann.

Beispiel 01: Zugriff auf eine einzelne Aufgabe in Ansible Playbook

Wir werden in Ansible implementieren, indem wir mehrere Aufgaben im Playbook bereitstellen, und dann werden wir nur auf eine einzelne Aufgabe zugreifen, indem wir die darin enthaltenen Tags verwenden. Dazu erstellen wir zuerst das Playbook, indem wir den folgenden Befehl schreiben:



[root@master ansible]# nano ansible_tags.yml

Nach dem Erstellen und Starten des Playbooks ansible_tags.yml. Jetzt beginnen wir mit dem Schreiben der Befehle in das Playbook. Zuerst übergeben wir die bereitgestellten Hosts im Parameter „hosts“, den wir „localhost“ verwenden. Dann schreiben wir den Wert „false“ in den Parameter „gather_facts“, damit wir die zusätzlichen Informationen über den lokalen Host nicht erhalten können, wenn wir das Playbook ausführen.

Danach werden wir beginnen, die Aktivitäten nacheinander unter dem Parameter „Tasks“ aufzulisten, die wir ausführen möchten. Wir werden im ersten Prozess feststellen, ob das Dokument auf dem localhost-Rechner vorhanden ist. Wenn es verfügbar ist, speichern wir es im Parameter „register“ und geben dem Tag dann einen eindeutigen Namen, damit wir beim Ausführen des Playbooks leicht auf das Tag zugreifen können. In der zweiten Aufgabe machen wir dasselbe wie in der ersten Aufgabe, aber das Tag muss eindeutig sein, und dann verwenden wir die Debug-Option, um die Aufgabe zusammen mit der zugehörigen Meldung anzuzeigen.

- Gastgeber:

- lokaler Host
collect_facts: falsch


Aufgaben:
- name: Existenz der Datei prüfen x`
stat: path=./host.yml
registrieren: fileExists
Tags: check_file


- debuggen:
msg: '{{ 'Datei existiert' if fileExists.stat.exists else 'Datei nicht gefunden' }}'
Tags: check_file


- name: Prüfen Sie, ob host.yml für den aktuellen Benutzer zugänglich ist
Shell: stat -c '%a' ./host.yml
registrieren: Zugriffspfad
Tags: check_access


- debuggen:
msg: '{{ 'Datei zugänglich' if (accessPath.stdout|int) < 660 else 'Datei ist nicht zugänglich' }}'
Tags: check_access

Jetzt speichern wir das Playbook und schließen es dann. Wir möchten das Playbook ansible_tags.yml ausführen, also schreiben wir den folgenden Befehl in das Ansible-Terminal, um die Ausgabe den Benutzern zu präsentieren.

[root@master ansible]# ansible-playbook ansible_tags.yml –tags check_file

Nachdem wir den obigen Befehl ausgeführt haben, erhalten wir die gewünschte Ausgabe zurück. Wie unten gezeigt, wird nur eine Aufgabe ausgeführt und diese wird in der Ausgabe angezeigt, die „Dateiexistenz prüfen“ lautet.

Beispiel 02: Bestimmtes Tag im Ansible Playbook ignorieren

Hier ist das zweite Beispiel des Ansible-Tags, bei dem wir zum „Skip“-Tag gehen. Es bleibt Ihnen überlassen, ob Sie alle Tasks ignorieren möchten oder ob Sie eine bestimmte Task des Playbooks in Ansible ignorieren möchten. Wir verwenden die Implementierung von Beispiel 1 und überspringen dann einfach die Aufgabe, indem wir einfach die folgende Anweisung in das Ansible-Terminal schreiben.

[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_file

Vom obigen Befehl haben wir die Aufgabe „Dateiexistenz prüfen“ einfach ignoriert. Jetzt wird in der Ausgabe nur noch eine einzelne Aufgabe angezeigt, die in grüner Schrift „dateizugänglich“ ist.

Beispiel 03: Führen Sie die Aufgabe in Ansible Playbook immer weiter aus

Wir werden das dritte Beispiel basierend auf dem Ansible-Tag implementieren. In diesem Beispiel verwenden wir das „always“-Tag, was bedeutet, dass ein bestimmtes Tag im Ansible Playbook immer ausgeführt wird. Verwenden Sie den folgenden Befehl, um das Playbook zu starten:

[root@master ansible]# nano ansible_tags.yml

Im Playbook haben wir mehrere auszuführende Aufgaben erstellt, aber wir haben das „Always“-Tag in der letzten Aufgabe übergeben, die „Passwort aus dem Inventar löschen“ lautet. Im Folgenden sind die im Playbook implementierten Befehle aufgeführt:

- Gastgeber: alle

collect_facts: falsch


Aufgaben:
- name: Existenz der Datei prüfen
stat: path=./host.yml
registrieren: fileExists
delegieren_an: lokaler Host
Tags: check_file


- debuggen:
msg: '{{ 'Datei existiert' if fileExists.stat.exists else 'Datei nicht gefunden' }}'
Tags: check_file


- name: Prüfen Sie, ob host.yml für den aktuellen Benutzer zugänglich ist
Shell: stat -c '%a' ./host.yml
registrieren: Zugriffspfad
delegieren_an: lokaler Host
Tags: check_access


- debuggen:
msg: '{{ 'Datei zugänglich' if (accessPath.stdout|int) < 660 else 'Datei ist nicht zugänglich' }}'
Tags: check_access


- name: Passwort aus Inventar löschen
Zeilendatei:
Pfad: '{{inventory_file}}'
regulärer Ausdruck: '\b{{Element}}.*\b'
Zustand: abwesend
delegieren_an: lokaler Host
werden: falsch
Schlagworte: immer
mit_Artikeln:
- ansible_passwort

Danach erstellen wir die Inventardatei, um die Verbindung zwischen dem Controller und dem Ziel-Remote-Host aufzubauen. Unten ist der Befehl:

[root@master ansible]# nano host.yml

Hier ist die Inventardatei, die die Informationen zu „Linux_host“ in Ansible enthält.

Alle:

Gastgeber:
Linux_Host:
ansible_host: 192.168.3.229
ansible_user: ansible
ansible_passwort: ******
ansible_connection: ssh
ansible_port: 22

Um die gewünschte Ausgabe zu erhalten, führen wir den folgenden Befehl im Ansible-Terminal aus:

[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml

Abschluss

Tags in Ansible wurden in diesem Artikel erklärt. Wir verstehen jetzt die Funktion von Tags und die Stellen in Ansible, an denen wir sie anwenden werden. Um dem Lernenden zu helfen, das Konzept von Ansible-Tags zu verstehen, haben wir eine Vielzahl von Beispielen entwickelt.