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