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

Verwendung von Tags in Ansible Playbook (Beispiele)

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


Linux
  1. Wie ich Ansible und Anacron für die Automatisierung verwende

  2. Verwendung von IP Command unter Linux mit Beispielen

  3. Verwendung des ethtool-Befehls mit Beispielen

  4. So erstellen Sie ein Ansible-Playbook

  5. So übergeben Sie zusätzliche Variablen an ein Ansible-Playbook

So verwenden Sie den Grep-Befehl unter Linux + Nützliche Grep-Beispiele

So verwenden Sie den Dig-Befehl unter Linux (10 Beispiele)

So verwenden Sie den Linux-rm-Befehl mit Beispielen

So definieren und verwenden Sie Handler in Ansible Playbooks

Wie man Ansible verwendet, um Vim zu konfigurieren

So verwenden Sie Ansible zum Senden einer E-Mail mit Google Mail