Verzeichnisstruktur ·
tasks ·
handlers ·
vars ·
templates ·
meta
Roles sind das Herzstück der Wiederverwendbarkeit in Ansible. Sie ermöglichen die strukturierte Organisation von Playbooks, Tasks, Variablen, Templates und Handlern – ideal für komplexe Automatisierungen.
Verzeichnisstruktur – jede Rolle hat eine standardisierte Verzeichnisstruktur. Mit ansible-galaxy init wird eine neue Rolle mit allen Unterverzeichnissen angelegt.
| Verzeichnis | Beschreibung |
|---|---|
| defaults/ | Standardvariablen (niedrigste Priorität) |
| vars/ | Variablen (höhere Priorität als defaults) |
| tasks/ | Hauptaufgaben der Rolle (main.yml) |
| handlers/ | Handler für Service-Neustarts etc. |
| templates/ | Jinja2-Templates (Endung .j2) |
| files/ | Statische Dateien für copy-Modul |
| meta/ | Metadaten (Abhängigkeiten, Autor, Plattformen) |
| tests/ | Test-Playbooks für die Rolle |
main.yml ist der Einstiegspunkt für tasks, handlers, vars und defaults.
tasks sind die zentralen Aufgaben einer Rolle. Sie werden in tasks/main.yml definiert und beschreiben, welche Aktionen auf den Zielsystemen ausgeführt werden.
include_tasks oder import_tasks, um große main.yml in mehrere Dateien aufzuteilen – z.B. install.yml, configure.yml, service.yml.
handlers werden nur ausgeführt, wenn sie durch eine Task mit notify ausgelöst werden – und nur am Ende des Playbooks. Sie eignen sich perfekt für Service-Neustarts nach Konfigurationsänderungen.
listen, um mehrere Handler-Namen auf eine Aktion zu mappen – so können Sie notify: webserver restart verwenden, ohne den genauen Service-Namen zu kennen.
Variablen in Roles werden in defaults/ und vars/ definiert. defaults/ hat die niedrigste Priorität und kann leicht überschrieben werden – ideal für Standardwerte.
defaults/ < vars/ < Playbook vars < Inventory host_vars < Befehlszeile (-e). So können Sie Rollen flexibel konfigurieren.
templates enthalten Jinja2-Vorlagen für Konfigurationsdateien. Sie werden mit dem template-Modul auf die Zielsysteme übertragen und dynamisch mit Variablen befüllt.
| default('wert'), um Fallback-Werte zu definieren.
meta enthält Metadaten für die Rolle – Autor, Beschreibung, unterstützte Plattformen und vor allem Abhängigkeiten zu anderen Rollen.
dependencies können Sie sicherstellen, dass abhängige Rollen automatisch ausgeführt werden. Ansible Galaxy nutzt galaxy_info für die Metadaten bei der Veröffentlichung von Rollen.
init
tasks
handlers
vars
templates
ansible-galaxy init webserver ·
roles: - role: webserver ·
notify: nginx restart