Manchmal möchten Sie möglicherweise bestimmte Aufgaben ausführen, anstatt eine gesamte Playbook-Datei auszuführen. Dies trägt dazu bei, die gesamte Playbook-Ausführungszeit zu verkürzen, insbesondere wenn es sich um eine große Playbook-Datei handelt.
Also, was sind Tags?
Tags in Playbooks sind Metadaten, die an Aufgaben in einer Playbook-Datei angehängt sind. Sie werden beim Ausführen von Playbooks verwendet und ermöglichen es Ihnen, bestimmte Aufgaben zur Laufzeit selektiv auszuführen. Grundsätzlich weisen Sie Ansible an, bestimmte Aufgaben innerhalb der Playbook-Datei auszuführen (oder nicht auszuführen).
Üblicherweise wurden übersprungene Aufgaben erledigt und müssen daher nicht noch einmal ausgeführt werden. Auf diese Weise vermeiden Tags Wiederholungen und optimieren die Ausführungszeit des Playbooks. Sie sind praktisch, wenn Sie bestimmte Aufgaben bei Bedarf ausführen möchten.
In diesem Leitfaden befassen wir uns mit Ansible-Tags und demonstrieren, wie Sie Tags an Aufgaben anhängen können, um die Playbook-Ausführung zu bestimmen.
Führen Sie eine bestimmte Aufgabe in einem Playbook aus
Nehmen wir ein Beispiel für eine Playbook-Datei, die drei Aufgaben wie gezeigt ausführt. Die Tags werden mit dem Tags-Label am Ende jeder Aufgabe angegeben.
--- - name: Ansible Tags example hosts: localhost gather_facts: False tasks: - name: Hello World tag example debug: msg: "Hello World!" tags: - hello - name: Welcome to Ansible Tags tag example debug: msg: "How are you?" tags: - welcome - name: Enjoy tag example debug: msg: "Enjoy!" tags: - enjoy
In diesem Playbook haben wir drei Tags:Hallo, Willkommen und Viel Spaß.
$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --list-tags
Wie bereits erwähnt, können Sie Tags verwenden, um die Ausführung von Ansible-Playbooks zu steuern. Um anzugeben, welche Aufgabe ausgeführt werden soll, verwenden Sie das Flag -t oder –tags.
Im folgenden Befehl weisen wir Ansible an, nur die erste Aufgabe auszuführen, die mit hello.
gekennzeichnet wurde$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --tags hello
Spezifische Tags in einem Playbook überspringen
Sie können Ansible auch anweisen, bestimmte Tags zu überspringen, indem Sie das Flag –skip-tags verwenden. Dabei führt Ansible die restlichen Aufgaben in der Playbook-Datei mit Ausnahme der bereitgestellten Aufgabe aus.
In diesem Beispiel ignoriert Ansible die letzte Aufgabe mit dem Tag enjoy und führt die restlichen Aufgaben aus, die im Playbook definiert sind.
$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --skip-tags enjoy
Stellen Sie sicher, dass eine Aufgabe immer (oder nie) ausgeführt wird
Auch wenn Sie Tags verwenden, um festzulegen, welche Aufgaben in einer Playbook-Datei ausgeführt werden sollen, stellen Sie manchmal fest, dass es Aufgaben gibt, die Sie ausführen müssen. Nehmen wir zum Beispiel ein Playbook, das Apache auf dem entfernten Webserver installiert.
Das Spielbuch hat 3 Aufgaben. Es aktualisiert zunächst die Paketlisten auf dem Remote-Host, installiert Apache und startet ihn neu. Vor der Installation von Apache ist es jedoch erforderlich, die Paketlisten zu aktualisieren oder die Repositories zu aktualisieren.
Da das Aktualisieren der Repositories eine Voraussetzung ist, markieren wir diese Aufgabe mit dem Always-Tag.
--- - name: install Apache webserver hosts: webserver tasks: - name: Update and upgrade apt packages apt: update_cache: yes tags: - always - name: install Apache on Ubuntu apt: name: apache2 state: latest tags: - install_apache - name: Restart Apache Webserver service: name: apache2 state: restarted tags: - restart_apache
Ohne Tags wird das Playbook wie erwartet ausgeführt.
$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml
Wenn wir angeben, dass eine andere als die obligatorische Aufgabe (in diesem Fall die erste Aufgabe) ausgeführt werden soll, führt Ansible auch die Aufgabe aus, die das Tag „always“ trägt.
In diesem Beispiel haben wir Ansible angewiesen, Apache neu zu starten, der das Tag „restart_apache“ trägt. Die Aufgabe „Apt-Repository aktualisieren“ wird jedoch weiterhin ausgeführt, da sie das Tag „Always“ enthält.
$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml --tags restart_apache
Auf die gleiche Weise können Sie Ansible anweisen, niemals eine Aufgabe auszuführen, und dafür verwenden wir das „nie“-Tag. Dies ist das genaue Gegenteil des „Always“-Tags.
Zurück zu unserem Playbook. Angenommen, Sie möchten Apache nach der Installation nicht neu starten. Um dies zu erreichen, übergeben Sie einfach das Never-Tag wie gezeigt.
- name: Restart Apache Webserver service: name: apache2 state: restarted tags: - restart_apache - never
Dies kann auch wie folgt mit den doppelten eckigen Klammern gekennzeichnet werden:
tags: [ restart_apache, never ]
Wenn das Playbook ohne Tags ausgeführt wird, wird die Aufgabe ausgelassen.
$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml
Aus der Ausgabe können Sie ersehen, dass die Aufgabe „Apache neu starten“ übersprungen wurde.
HINWEIS:
Eine Aufgabe, die mit „nie“ gekennzeichnet ist, wird weiterhin ausgeführt, wenn sie explizit im ansible-playbook-Befehl aufgerufen wird. Beispielsweise wird die Aufgabe, die Apache neu startet, trotzdem ausgeführt, da sie explizit im Befehl definiert wurde.
$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml --tags restart_apache
Abschluss
Ansible-Tags sind praktisch und bieten die Flexibilität, die zum Ausführen von Ansible-Playbooks erforderlich ist. Sie können die Ausführung bestimmter Aufgaben in einem Playbook ausführen oder überspringen. Dies bietet eine bessere Kontrolle über Ihre Playbooks während der Playbook-Laufzeit.
Lesen Sie auch :Verwendung von Ansible Vault zur Sicherung sensibler Daten