Skip to main content

Ansible Playbooks – Strukturierte Automatisierung auf Enterprise-Niveau

Ansible Playbooks sind das zentrale Steuerungsinstrument von Ansible. Sie beschreiben in deklarativer Form, was ein Systemzustand sein soll, nicht wie er technisch im Detail erreicht wird.

Damit eignen sich Playbooks ideal für professionelle DevOps-, Cloud-, Self-Hosting- und Enterprise-Umgebungen, in denen Reproduzierbarkeit, Nachvollziehbarkeit und Skalierbarkeit zwingend erforderlich sind.


1. Grundkonzept von Ansible Playbooks

Ein Playbook besteht aus einem oder mehreren sogenannten Plays. Jeder Play definiert:

  • Zielsysteme (Hosts)
  • Auszuführende Tasks
  • Benötigte Variablen
  • Berechtigungen (Privilege Escalation)

Playbooks werden im YAML-Format geschrieben und sind damit:

  • lesbar
  • versionierbar
  • auditierbar

2. Aufbau eines einfachen Playbooks

---
- name: Basis-Server-Konfiguration
  hosts: webserver
  become: true

  tasks:
    - name: Apache installieren
      apt:
        name: apache2
        state: present

    - name: Apache starten
      service:
        name: apache2
        state: started
        enabled: true

Erklärung:

  • hosts – Zielsysteme aus dem Inventory
  • become – Ausführung mit erhöhten Rechten
  • tasks – Einzelne, idempotente Aktionen

3. Idempotenz – Kernprinzip von Ansible

Idempotenz bedeutet:

Ein Playbook kann beliebig oft ausgeführt werden, ohne den Systemzustand ungewollt zu verändern.

Beispiele:

  • Paket ist bereits installiert → keine Aktion
  • Service läuft bereits → keine Aktion
  • Datei ist korrekt → keine Änderung

Dies unterscheidet Ansible fundamental von klassischen Skripten.


4. Tasks im Detail

4.1 Paketmanagement

- name: Installiere benötigte Pakete
  apt:
    name:
      - curl
      - git
      - htop
    state: present
    update_cache: true

4.2 Dateien & Templates

- name: Konfigurationsdatei ausrollen
  template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
    owner: root
    group: root
    mode: '0644'

4.3 Services

- name: Nginx neu starten
  service:
    name: nginx
    state: restarted

5. Variablen in Playbooks

Variablen ermöglichen flexible, wiederverwendbare Playbooks.

vars:
  web_port: 80
- name: Firewall-Port öffnen
  ufw:
    rule: allow
    port: "{{ web_port }}"
    proto: tcp

Variablen können definiert werden in:

  • Playbooks
  • Inventories
  • Rollen
  • Externen Dateien

6. Fehlerbehandlung

6.1 Ignore Errors

- name: Optionales Paket installieren
  apt:
    name: optional-package
    state: present
  ignore_errors: true

6.2 Conditional Execution

- name: Nur auf Ubuntu ausführen
  apt:
    name: apache2
    state: present
  when: ansible_distribution == "Ubuntu"

7. Debugging & Dry Runs

7.1 Check Mode

Simulation ohne Änderungen:

ansible-playbook playbook.yml --check

7.2 Verbose Output

ansible-playbook playbook.yml -vvv

8. Typische Fehler & Ursachen

Fehler Ursache Lösung
Permission denied Fehlendes become become: true setzen
Host unreachable SSH / Inventory Netzwerk & Zugang prüfen
Task failed Falsche Parameter Dokumentation prüfen

9. Vor- und Nachteile von Playbooks

Vorteile

  • Lesbar und deklarativ
  • Idempotent
  • Skalierbar
  • Ideal für Infrastruktur-Standards

Nachteile

  • YAML-Fehleranfälligkeit bei Einrückung
  • Komplexität bei sehr großen Playbooks

Zusammenfassung

Ansible Playbooks sind das Fundament strukturierter Infrastruktur-Automatisierung. Sie ermöglichen reproduzierbare, sichere und wartbare Systemzustände über hunderte oder tausende Systeme hinweg.

Richtig eingesetzt ersetzen sie manuelle Administration nahezu vollständig.