Rollen und Tasks sind das Fundament der Automatisierung mit Ansible. Beides schauen wir uns in diesem Teil des Tutorials an.
Tasks
1 | Einführung |
---|---|
2 | Das Inventory |
3 | Über Rollen und Tasks |
4 | Die Module |
5 | Playbooks |
6 | Konfiguration |
7 | gather_facts |
8 | eigene Module |
Ein Task beschreibt eine Abfolge von Modulen, die auf einem Managed Node ausgeführt werden sollen. Ein Task wird üblicherweise in einer YAML-Datei definiert. Am besten zeig ich dir das mal an einem Beispiel.Du kennst die Befehlskette zum Upgrade von Raspberry Pi OS
sudo apt update && sudo apt dist-upgrade -y
Diese würde als Ansible Task folgendermaßen aussehen:
- name: PIs aktualisieren
become: true
apt:
upgrade: dist
update_cache: yes
cache_valid_time: 120
autoremove: yes
Damit wird auf allen Managed Nodes das apt
Modul ausgeführt. Dabei wird der Package Cache aktualisiert (update_cache: yes)
, sofern er älter als 2 Stunden ist ( cache_valid_time: 120
). Der das Upgrade wird als dist-upgrade durchgeführt (upgrade: list
) und nicht mehr benötigte Packages werden entfernt ( autoremove: yes
). Zur Ausführung soll der Task sich zum root
User machen (become: true
). Ich empfehle dir, jedem Task einen eindeutigen Namen zu geben, spätestens, wenn ein Playbook mehrere Rollen einbindet, hast du dann eine bessere Kontrolle darüber, was das Playbook gerade abarbeitet.
Dieser Task kann jetzt aus beliebigen Rollen heraus ausgeführt werden.
Rollen
Rollen organisieren die Tasks und geben ihnen die Struktur, die für die (Wieder)Verwendbarkeit in Playbooks notwendig ist.
Für die Rollen benötigen wir ein Verzeichnis
mkdir roles
Für unseren Upgrade Task ober würden wir jetzt eine Rolle definieren. Wir nennen sie upgradepi
und legen auch dafür ein eigenes Verzeichnis unterhalb von roles
an
mkdir rotes/upgradepi
Jede Rolle hat ihr eigenes Verzeichnis und lassen sich so leicht voneinander trennen.
Rollen und Tasks bilden die Grundlagen für die Playbooks, mit deren Hilfe wir später automatisieren werden. Wenn du eigene Rollen und Tasks baust, solltest du dies immer mit Blick auf die Wiederverwendbarkeit machen und dir so Arbeit ersparen.
Rollen und Tasks verwenden
Wie du Rollen und Tasks verwenden kannst, zeig ich dir im übernächsten Kapitel. Im nächsten geht es zunächst mal um die Module.