ansible: Rolle nur bei explizit gesetzten Tags ausführen

Manchmal hat man in seinem ansible Plabooks Rollen, die man beispielsweise nicht bei jedem Durchgang ausführen möchte, sondern nur wenn ein Tag explizit gesetzt ist.

Ein Beispiel dafür wäre eine „update“ Rolle, welche das System aktualisiert und ggf. danach den Server gleich neu startet. Das will man natürlich nicht bei jedem durchlauf machen.

Mit den zwei Spezial-Tags never und always bietet ansible hierfür die richtigen Werkzeuge.

Hat man beispielsweise ein solches Playbook:

playbook.yml

- hosts: all
  roles:
    - role: baseline
    - role: update
      tags: ['update']
    - role: apache
#   [...]

Würde man jetzt das playbook.yml ausführen würden alle Rollen durchlaufen, auch die Rolle update, welche das ganze System aktualisert und danach den Server neu bootet. Das will man natürlich normalerweise nicht und stattdessen dies nur in ausnahmefällen ausführen, nämlich wenn man den tag „update“ setzt:

ansible-playbook playbook.yml --limit example-server --tags update

In ansible gibt es dazu zwei Spezial-Tags, ’never‘ und ‚always‘. Setzt man diese wird die Rolle nur dann ausgeführt, wenn man explizit einen Tag aus dieser Liste angibt:

- hosts: all
  roles:
    - role: baseline
      tags: ['always']
    - role: update
      tags: ['never', 'update']
    - role: apache
      tags: ['apache']
#   [...]

Nun wird beim normalen ausführen die Rolle „update“ übergangen, ausser man setzt den Tag mit –tags auf ‚update‘.

Das Gegenteil macht der Tag ‚always‘: Rollen mit diesem Tag werden auch ausgeführt, wenn man eine Tag angbinbt in denen sie nicht enthalten sind. Beispielsweise würde im nachfolgenden Beispiel die Rolle „baseline“ trotzdem ausgeführt:

ansible-playbook playbook.yml --tags apache

Will man dies ausnahmsweise verhinden, kann man das explizit durch die Option: --skip-tags always machen.

Published by

Steven Varco

Steven ist ein Redhat RHCE-Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.