update
This commit is contained in:
@@ -0,0 +1,271 @@
|
||||
# 🧩 Was ist Ansible?
|
||||
|
||||
**Ansible** ist ein Open-Source-Tool zur **Automatisierung von IT-Aufgaben**. Es wird vor allem genutzt für:
|
||||
|
||||
* **Konfigurationsmanagement** (Server einrichten)
|
||||
* **Deployment** (Software ausrollen)
|
||||
* **Orchestrierung** (komplexe Abläufe steuern)
|
||||
|
||||
👉 Einfach gesagt:
|
||||
Mit Ansible kannst du **wiederholbare Aufgaben automatisieren**, die sonst manuell auf Servern ausgeführt werden müssten.
|
||||
|
||||
💡 Besonderheit:
|
||||
Ansible ist **agentenlos** – es muss nichts auf den Zielsystemen installiert werden (nur z. B. SSH-Zugang bei Linux).
|
||||
|
||||
---
|
||||
|
||||
# 🧠 Grundprinzip (einfach erklärt)
|
||||
|
||||
Ansible arbeitet mit sogenannten **Playbooks** (YAML-Dateien), in denen du beschreibst:
|
||||
|
||||
> „Was soll passieren?“ – nicht „Wie genau Schritt für Schritt?“
|
||||
|
||||
Beispiel (vereinfacht):
|
||||
|
||||
```yaml
|
||||
- hosts: webserver
|
||||
tasks:
|
||||
- name: Installiere Nginx
|
||||
apt:
|
||||
name: nginx
|
||||
state: present
|
||||
```
|
||||
|
||||
👉 Bedeutung:
|
||||
|
||||
* Ziel: Servergruppe „webserver“
|
||||
* Aufgabe: Installiere Nginx, falls noch nicht vorhanden
|
||||
|
||||
➡️ Wichtig: **idempotent**
|
||||
→ Der gleiche Befehl kann beliebig oft laufen, ohne Schaden anzurichten.
|
||||
|
||||
---
|
||||
|
||||
# 🔍 Abgrenzung zu ähnlichen Tools
|
||||
|
||||
Ansible gehört zur Kategorie „Infrastructure as Code“. Hier ein Vergleich:
|
||||
|
||||
### 🆚 Puppet
|
||||
|
||||
* arbeitet mit Agenten auf Zielsystemen
|
||||
* eigene DSL (Programmiersprache)
|
||||
* komplexer Einstieg
|
||||
|
||||
👉 Ansible:
|
||||
|
||||
* kein Agent nötig
|
||||
* nutzt YAML (einfacher lesbar)
|
||||
|
||||
---
|
||||
|
||||
### 🆚 Chef
|
||||
|
||||
* basiert stark auf Ruby
|
||||
* eher „programmatisch“
|
||||
|
||||
👉 Ansible:
|
||||
|
||||
* deklarativ („Zielzustand beschreiben“)
|
||||
|
||||
---
|
||||
|
||||
### 🆚 Terraform
|
||||
|
||||
* erstellt Infrastruktur (Cloud, Netzwerke)
|
||||
* Fokus: „Was existiert?“
|
||||
|
||||
👉 Ansible:
|
||||
|
||||
* konfiguriert Systeme („Was läuft darauf?“)
|
||||
|
||||
💡 Typische Kombination:
|
||||
|
||||
* Terraform erstellt Server
|
||||
* Ansible konfiguriert sie
|
||||
|
||||
---
|
||||
|
||||
### 🆚 Docker
|
||||
|
||||
* isoliert Anwendungen in Containern
|
||||
|
||||
👉 Ansible:
|
||||
|
||||
* kann Docker automatisieren (z. B. Container starten)
|
||||
|
||||
---
|
||||
|
||||
# 🧩 Welche Probleme löst Ansible?
|
||||
|
||||
## 1. ❌ „Works on my machine“-Problem
|
||||
|
||||
Unterschiedliche Umgebungen führen zu Bugs.
|
||||
|
||||
👉 Lösung:
|
||||
|
||||
* identische Konfiguration überall
|
||||
|
||||
---
|
||||
|
||||
## 2. ❌ Manuelle Server-Konfiguration
|
||||
|
||||
Admins klicken sich durch Systeme → fehleranfällig
|
||||
|
||||
👉 Lösung:
|
||||
|
||||
* alles als Code definieren
|
||||
|
||||
---
|
||||
|
||||
## 3. ❌ Deployment-Chaos
|
||||
|
||||
Unklare Abläufe beim Software-Rollout
|
||||
|
||||
👉 Lösung:
|
||||
|
||||
* automatisierte Deployments
|
||||
|
||||
---
|
||||
|
||||
## 4. ❌ Skalierung schwierig
|
||||
|
||||
Mehr Server = mehr Aufwand
|
||||
|
||||
👉 Lösung:
|
||||
|
||||
* gleiche Playbooks für 1 oder 100 Server
|
||||
|
||||
---
|
||||
|
||||
# ⚙️ Typische Anwendungsfälle (mit Praxisbeispielen)
|
||||
|
||||
## 🧪 Beispiel 1: Webserver aufsetzen
|
||||
|
||||
Statt:
|
||||
|
||||
* SSH einloggen
|
||||
* Pakete installieren
|
||||
* Config schreiben
|
||||
|
||||
👉 Mit Ansible:
|
||||
|
||||
* ein Playbook ausführen → fertig
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Beispiel 2: Continuous Deployment
|
||||
|
||||
In Kombination mit Tools wie:
|
||||
|
||||
* Jenkins
|
||||
* GitLab
|
||||
|
||||
Ablauf:
|
||||
|
||||
1. Code wird gepusht
|
||||
2. Pipeline startet
|
||||
3. Ansible deployed neue Version
|
||||
|
||||
---
|
||||
|
||||
## ☁️ Beispiel 3: Cloud-Setup
|
||||
|
||||
* Server via Terraform erstellen
|
||||
* Ansible installiert:
|
||||
|
||||
* Datenbank
|
||||
* Backend
|
||||
* Monitoring
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Beispiel 4: Updates automatisieren
|
||||
|
||||
```yaml
|
||||
- name: Update alle Server
|
||||
apt:
|
||||
upgrade: dist
|
||||
```
|
||||
|
||||
👉 Ergebnis:
|
||||
|
||||
* alle Systeme sind aktuell – ohne manuelles Eingreifen
|
||||
|
||||
---
|
||||
|
||||
# ⚠️ Herausforderungen und Grenzen
|
||||
|
||||
## 1. 📚 Komplexität bei großen Projekten
|
||||
|
||||
* viele Playbooks → schwer zu überblicken
|
||||
|
||||
👉 Lösung:
|
||||
|
||||
* Rollen & Struktur nutzen
|
||||
|
||||
---
|
||||
|
||||
## 2. 🐢 Performance
|
||||
|
||||
* läuft über SSH → langsamer als agentbasierte Tools
|
||||
|
||||
---
|
||||
|
||||
## 3. 🧪 Debugging
|
||||
|
||||
* Fehleranalyse manchmal schwierig
|
||||
|
||||
---
|
||||
|
||||
## 4. 🧑💻 YAML-Fallen
|
||||
|
||||
* Einrückung kritisch („Whitespace matters“)
|
||||
|
||||
---
|
||||
|
||||
## 5. 🔐 Zugriffsmanagement
|
||||
|
||||
* SSH-Keys und Rechte müssen sauber konfiguriert sein
|
||||
|
||||
---
|
||||
|
||||
# 🧱 Wichtige Konzepte (kurz erklärt)
|
||||
|
||||
* **Inventory** → Liste der Zielsysteme
|
||||
* **Playbook** → Ablaufbeschreibung
|
||||
* **Task** → einzelne Aktion
|
||||
* **Role** → wiederverwendbare Struktur
|
||||
* **Module** → konkrete Funktionen (z. B. apt, copy)
|
||||
|
||||
---
|
||||
|
||||
# 🧭 Wann solltest du Ansible verwenden?
|
||||
|
||||
👉 Gute Wahl, wenn du:
|
||||
|
||||
* viele Server verwalten musst
|
||||
* wiederholbare Deployments brauchst
|
||||
* schnell starten willst (geringe Einstiegshürde)
|
||||
|
||||
👉 Weniger geeignet:
|
||||
|
||||
* bei extrem großen, hochdynamischen Systemen (teilweise bessere Alternativen)
|
||||
|
||||
---
|
||||
|
||||
# 🧠 Fazit
|
||||
|
||||
**Ansible ist eines der zugänglichsten Tools für Automatisierung in der Softwareentwicklung.**
|
||||
|
||||
Es hilft dir:
|
||||
|
||||
* Fehler zu reduzieren
|
||||
* Zeit zu sparen
|
||||
* Infrastruktur reproduzierbar zu machen
|
||||
|
||||
👉 Besonders stark ist es durch:
|
||||
|
||||
* einfache Syntax (YAML)
|
||||
* agentenlose Architektur
|
||||
* breite Einsatzmöglichkeiten
|
||||
|
||||
Reference in New Issue
Block a user