5.2 KiB
Ansible-Präsentation — Übersicht
Moderne Präsentation über Ansible mit begleitendem Handout und einem lauffähigen Beispiel-Projekt. Alles in Python generiert und reproduzierbar.
Inhalt des Ordners
ansible_präsentation/
├── create_presentation.py # Python-Skript, das die .pptx erzeugt
├── README.md # Diese Übersicht
├── Dokumentation/
│ ├── ansible_praesentation.pptx # Die fertige Präsentation (23 Folien, 16:9)
│ ├── handout.md # Handout (Markdown-Quelle)
│ └── handout.docx # Handout (druckbar/editierbar, für OnlyOffice)
├── assets/
│ ├── ansible_mark_red.png # Ansible-Logo (rot) — Quelle: Wikimedia Commons
│ ├── ansible_mark_white.png # Ansible-Logo (weiß)
│ ├── ansible_logo.svg # Logo-Quelldatei (SVG)
│ └── architektur.png # Architektur-Diagramm (automatisch erzeugt)
└── Beispiel/ # Lauffähiges Beispiel-Playbook (siehe unten)
1. Die Präsentation (ansible_praesentation.pptx)
23 Folien, 16:9, in den Ansible-Brandfarben (Rot #EE0000, Anthrazit #1A1918).
| # | Titel | Inhalt |
|---|---|---|
| 1 | Titel | Agenda, Ansible-Logo |
| 2 | Was ist Ansible? | Definition, Merkmale (agentenlos, idempotent, …) |
| 3 | Architektur | Control Node, Managed Nodes (Diagramm) |
| 4 | Vier Kernkonzepte | Playbooks, Inventory, Module, Rollen |
| 5 | ansible.cfg | Konfiguration, Suchreihenfolge (wer gewinnt) |
| 6 | ansible.cfg Parameter | Wichtige Werte in [defaults], [privilege_escalation], [ssh_connection] |
| 7 | YAML-Syntax | Grundregeln + Inventory-Beispiel |
| 8 | Playbook | site.yml mit Tasks & FQCN |
| 9 | Module | 6 Modul-Kategorien |
| 10 | Ad-hoc-Befehle | ansible-CLI ohne Playbook |
| 11 | Jinja2 | {{ variable }}, Filter, .j2-Templates |
| 12 | Gather Facts | Facts auslesen, Custom Facts, gather_facts |
| 13 | Variablen & Präzedenz | Quellen + Reihenfolge (wer gewinnt) |
| 14 | Ansible Vault (Konzept) | AES-256, $ANSIBLE_VAULT-Header, sicher in Git |
| 15 | Ansible Vault (Praxis) | encrypt_string (!vault-Variable) + ganze Datei (create/encrypt/view/edit/decrypt), --ask-vault-pass |
| 16 | FQCN (Definition) | namespace.collection.modul |
| 17 | FQCN (Praxis) | Beispiele + Warum |
| 18 | Collections | Was sie sind (6 Bestandteile) |
| 19 | Collections nutzen | Galaxy, Installation, Struktur |
| 20 | Rollen (Konzept) | Wiederverwendbarkeit, Kapselung |
| 21 | Rollen (Struktur) | roles/webserver/ Verzeichnisbaum |
| 22 | Praxisbeispiel | Playbook mit Rolle + Variablen |
| 23 | Zusammenfassung | Key-Takeaways + Quellen |
Design-Hinweis: Die Präsentation nutzt die Schriftarten Carlito (Body) und DejaVu Sans Mono (Code), da Calibri/Consolas auf Linux oft fehlen und OnlyOffice sonst substituiert (was zu gebrochenen Sonderzeichen führt).
2. Skript neu ausführen (create_presentation.py)
Das Skript erzeugt die .pptx vollständig reproduzierbar.
Voraussetzungen:
pip install python-pptx matplotlib Pillow
Ausführen:
python3 create_presentation.py
Das Skript:
- erzeugt das Architektur-Diagramm (
assets/architektur.png) selbst per matplotlib, - nutzt die Logo-PNGs aus
assets/(Quelle: Wikimedia Commons), - setzt die Folien aus Python-Code zusammen (jede Folie ist eine Funktion/Sektion).
3. Das Handout (handout.md / handout.docx)
Kompakte Referenz mit:
- YAML-Grundsyntax
- Ad-hoc-Befehle
- Jinja2 (Variablen auflösen, Filter,
.j2) - Gather Facts
- Wo Variablen definiert werden
- Ansible Vault (Variable per
!vault+ ganze Datei) - Variablen-Präzedenz (Auflösungs-Reihenfolge)
- Module & FQCN
- ansible.cfg (Suchreihenfolge + Parameter)
- Vollständiges Beispiel
Das .docx wird aus dem .md per pandoc erzeugt:
cd Dokumentation
pandoc handout.md -o handout.docx
4. Das Beispiel-Projekt (Beispiel/)
Ein vollständiges, lauffähiges Ansible-Projekt, das Rollen-Struktur, Variablen-Präzedenz und Templating für localhost demonstriert.
Siehe Beispiel/README.md für Details. Kurz:
cd Beispiel
ansible-playbook site.yml --check # Trockenlauf
ansible-playbook site.yml # echt ausführen
Die Struktur zeigt:
roles/webserver/mit tasks, handlers, templates, defaults, vars, meta- Variablen-Präzedenz:
defaults(80) →host_vars(8080) →-e(gewinnt) - Jinja2-Templates (
nginx.conf.j2,index.html.j2mit Schleife + Filter) - Facts (
ansible_facts['distribution'],ansible_facts['hostname'], …) - FQCN (
ansible.builtin.*) connection: local— läuft direkt auf dem Rechner, kein SSH (localhost ist kein echter Host)
Hinweis: Das Beispiel nutzt apt (Debian/Ubuntu). Auf Manjaro/Arch
verwendet man stattdessen community.general.pacman (Anpassung in
Beispiel/README.md beschrieben).
Quellen & Lizenz
- Ansible-Dokumentation: https://docs.ansible.com
- Ansible Galaxy: https://galaxy.ansible.com
- Ansible-Repository: https://github.com/ansible/ansible
- Ansible-Logo: Wikimedia Commons (https://commons.wikimedia.org/wiki/File:Ansible_logo.svg)