Nach der Einführung in die Grundlagen von Ansible widmen wir uns nun dem Herzstück der Automatisierung: den Playbooks. Mit ihnen lassen sich komplexe Abläufe in klar strukturierten YAML-Dateien beschreiben und auf beliebig viele Systeme gleichzeitig anwenden.
Aufbau eines Ansible Playbooks
Ein Playbook besteht aus einer oder mehreren Plays, die jeweils:
- eine Zielgruppe (z. B. Servergruppe im Inventory),
- eine Reihe von Tasks (auszuführende Aufgaben) und
- eventuell Variablen oder Rollen enthalten.
Beispiel für ein einfaches Playbook:
---
- name: Webserver installieren
hosts: webserver
become: yes
tasks:
- name: Apache installieren
apt:
name: apache2
state: present
- name: Apache starten
service:
name: apache2
state: started
enabled: yes
Dieses Playbook installiert und startet den Apache-Webserver auf allen Hosts in der Gruppe webserver.
Module: Die Bausteine von Ansible
Ansible stellt eine Vielzahl an Modulen bereit, die typische Aufgaben abdecken:
- Systemverwaltung:
user
,group
,service
- Paketmanagement:
apt
,yum
,dnf
,pip
- Dateiverwaltung:
copy
,file
,template
- Netzwerk und Cloud: Module für AWS, Azure, GCP, Docker, Kubernetes
- Datenbanken:
mysql_db
,postgresql_db
Module werden in Playbooks aufgerufen und führen einzelne Tasks aus.
Variablen und Templates
Mit Variablen lassen sich Playbooks flexibel gestalten:
vars:
web_package: apache2
tasks:
- name: Webserver installieren
apt:
name: "{{ web_package }}"
state: present
Templates mit Jinja2 ermöglichen dynamische Konfigurationsdateien, z. B. für Webserver oder Datenbanken.
Idempotenz und Wiederholbarkeit
Ein zentrales Prinzip von Ansible ist die Idempotenz:
- Mehrfaches Ausführen eines Playbooks führt zu keinen unerwarteten Änderungen.
- Systeme werden nur dann angepasst, wenn es wirklich nötig ist.
Dies garantiert stabile und vorhersehbare Automatisierungen.
Beispiel: Kombination mehrerer Aufgaben
---
- name: Komplettes Setup für Webserver
hosts: webserver
become: yes
tasks:
- name: Apache installieren
apt:
name: apache2
state: present
- name: Konfigurationsdatei bereitstellen
template:
src: apache.conf.j2
dest: /etc/apache2/sites-available/000-default.conf
notify:
- Apache neu laden
handlers:
- name: Apache neu laden
service:
name: apache2
state: reloaded
Mit Handlern kann man Dienste nur dann neu starten, wenn sich Konfigurationsdateien geändert haben.
Schreibe einen Kommentar