Ansible
Ziele und Kompetenzen
Einen Weg der Automatisierung kennen lernen
Grundlagen von Ansible kennen lernen
Automatisierung
Brainstorming
Was machen Sie eigentlich alles am Rechner von Hand...?
Probleme manuell installierter Server
Schwer wartbar
Kosten- und zeitintensiv
Setup des Servers ist nicht einfach (wenn überhaupt) reproduzierbar
Oft voller Bugs und Fehler
Eine Alternative: Skripte
Alles was langweilig ist, oft wiederholt wird, mühsam zu tippen ist, kein Spaß macht, kann man skripten...
Shell-Skripte (Unix -> Tutorium)
Batch, PowerShell unter Windows
Man kann auch jede beliebige Programmiersprache zur Automatisierung verwenden
Eigentlich schon immer da...
Vorteile von Skripten
Einfach zu verstehen
Straight-forward
Einfach zu ändern
Werden interpretiert
Nachteile von Skripten
Werden interpretiert
Kompatibilität (z.B. bei unterschiedlichen Versionen und Shell-Varianten wie bash und sh
Nur lokale Ausführung
Keine Parallelität
Langsam (pro Kommando ein Prozess vgl. Vorlesung Betriebssysteme)
Betrieb
Das Ops in DevOps
Ist eigentlich allen klar was "Betrieb" oder "Betriebsumfeld" bedeutet?
Betrieb vs. Entwicklung
Betrieb
Will eigentlich keine Änderungen
Strebt vorzugsweise Stabilität an
Möglichst wenige Bereitschaftseinsätze (Samstags auf Sonntag um 03:00 am Morgen)
Entwicklung
Will permanent Änderungen (Programmieren macht Spaß)
Neue Features um Kunden glücklich zu machen
Agilität (das haben wir Ihnen jetzt ja lange genug beigebracht)
Andauernd neue Versionen von Framework XYZ, neue Sprachen, neue Tools etc.
Ziele der Automatisierung
Entwicklung
Automatisiertes Testen
Automatisiertes Kompilieren
Automatisiertes Paketieren
Was wollen wir speziell im Betriebsumfeld automatisiert skripten?
Automatisierte Installationen
Automatisierte Updates
Automatisierte Konfigurationen
Automatisierte Installationen
Automatisierte Rückbauten
Konfigurationsmanagement
Was ist eigentlich ein sehr mächtiges Werkzeug in der Entwicklung?
Versionskontrolle
Dann ist das doch für den Betrieb auch keine schlechte Idee...
Was wir am besten können
Wir schreiben wieder und wieder die gleichen Shell- und Batch-Skripte
Wir fassen die Skripte, ergänzen diese mit div. Programmen und bauen ein Framework
Wir generalisieren das Framework so weit, dass es andere verwenden können...
Frameworks
Salt / SaltStack
Puppet
Chef
Ansible
Ansible
Was ist Ansible eientlich?
Framework zur Automatisierung administrativer Tätigkeiten
Leicht verständlich
Deklarativ
Idempotent
Modular
Eigenschaften von Ansible
Kein Master
Keine Agenten
Konfiguration in YAML
Einfach zu lernen (Hausaufgabe!)
Was wird benötigt
Ansible verwendet keinen zentralen Server
Alle Aufgaben werden in Playbooks gespeichert
Control Node
Python (2.7/3.x)
Ansible
Nodes
ssh-server
Python (2.7/3.x)
Inventory
Liste von Servern auf die ein Playbook angewendet werden kann
Einfache Textdateien
Beschreiben die Server
IP-Adressen oder DNS-Namen
Werden mittels Namen gruppiert
Variablen und Enumerationen
Bei vielen Systemen sinnvoll
Playbook
Beschreibt den Zielzustand des Nodes
Deklarativ (Unterschied zu imperativ klar?)
Nutzt YAML (YAML bekannt?)
HINWEIS: Einen großen Teil Ihrer zukünftigen Karriere in der IT werden Sie damit verbringen, nach fehlenden oder überflüssigen Leerzeichen und nach falschen Einrückungen in YAML-Dateien zu suchen. You are welcome.
Variablen
Ermöglichen die Wiederverwendung von Playbooks
Verschlüsselung (z.B. für Passwörter)
Können für Tasks, Kommandozeile, Dateien etc. verwendet werden
provisioning/vars/main.yml:
provisioning/hosts:
Rollen-Verzeichnisse
Module
Quasi für "Alles" Module verfügbar
Shell-Module
Für alles, für das es keine Modul gibt 🤓
Hinweis: Datei vorher auf Server kopieren, Executable Flag setzen etc.
Handlers
provisioning/roles/db/handlers/main.yml:
Spezifische Module ausführen
Spezifische Module ausführen
Hinweis:
Es werden nur Rollen in Betracht gezogen, die im Playbook aufgeführt sind
Mehrere Tags pro Eintrag möglich
Last updated