Während einfache Playbooks für kleinere Umgebungen ausreichen, stoßen sie in größeren IT-Umgebungen schnell an ihre Grenzen. Hier kommen Ansible-Rollen ins Spiel. Rollen ermöglichen eine klare Struktur, Wiederverwendbarkeit und eine bessere Wartbarkeit komplexer Automatisierungen.
Was sind Ansible-Rollen?
Eine Rolle ist ein Paket aus Tasks, Variablen, Templates, Dateien und Handlers, das eine bestimmte Funktion kapselt.
Beispiel:
- Eine Rolle für Webserver enthält alles, was für die Installation, Konfiguration und den Betrieb eines Webservers benötigt wird.
- Rollen können dann in beliebig vielen Playbooks wiederverwendet werden.
Aufbau einer Rolle
Eine typische Rollenstruktur sieht folgendermaßen aus:
roles/
webserver/
tasks/
main.yml
handlers/
main.yml
templates/
apache.conf.j2
files/
index.html
vars/
main.yml
defaults/
main.yml
meta/
main.yml
- tasks/main.yml: Enthält die Hauptaufgaben der Rolle.
- handlers/main.yml: Aktionen wie Neustarts oder Reloads von Diensten.
- templates/ und files/: Statische oder dynamische Dateien.
- vars/ und defaults/: Variablen, Standardwerte und Konfigurationen.
- meta/: Informationen über Abhängigkeiten zu anderen Rollen.
Rollen in Playbooks verwenden
Sobald eine Rolle definiert ist, kann sie in einem Playbook einfach eingebunden werden:
---
- name: Webserver installieren
hosts: webserver
become: yes
roles:
- webserver
Dadurch bleibt das Playbook übersichtlich, und die eigentliche Logik liegt in der Rolle selbst.
Ansible Galaxy: Rollen aus der Community
Über Ansible Galaxy stellt die Community tausende fertige Rollen bereit.
Beispiele:
- geerlingguy.apache für Apache-Webserver
- geerlingguy.mysql für MySQL-Datenbanken
Diese Rollen können einfach installiert und in eigenen Projekten genutzt werden:
ansible-galaxy install geerlingguy.apache
Best Practices für Rollen
- Modularität: Jede Rolle sollte nur eine klar abgegrenzte Aufgabe erfüllen.
- Wiederverwendbarkeit: Rollen so gestalten, dass sie für verschiedene Umgebungen nutzbar sind.
- Dokumentation: Jede Rolle sollte eine klare README-Datei enthalten.
- Variablen und Defaults: Flexible Konfiguration ohne Änderungen am Code.
Schreibe einen Kommentar