Saltstack

Konfigurationsverwaltung mit Saltstack

Saltstack ist ein skalierbares Werkzeug zur Verwaltung von lokalen Server-Infrastrukturen und Clouds. Einmal eingerichtet, kann ein Administrator damit in Sekunden neue Software verteilen und konfigurieren. Anders als andere Lösungen zur Konfigurationsverwaltung setzt Saltstack dazu von Haus aus auf einen asynchronen, verteilten Message Queue-Broker: ZeroMQ. Durch dieses Design ist es einfach kleine, aber auch große und verteilte Cluster zu administrieren.

Die eigentliche Konfiguration erfolgt bei Saltstack in einfachen Fällen mit Textdateien im YAML-Format. Darüber hinaus bietet Salt auf der Basis der Programmiersprache Python sehr viele Konfigurationskommandos, die sich schnell und effektiv zu ausführbaren States zusammenfassen lassen.

Weitere Eigenschaften von Saltstack:

  • Rollen, zeitbasierte und ereignisgesteuerte Provisionierung werden gleichzeitig unterstützt.
  • ereignisgesteuert Zustände von Systemen ändern
  • Berichte über verwaltete Server erstellen
  • Information von den Maschinen und für die Maschinen lassen sich getrennt verwalten und für die Provisionierung einsetzen.

Dieser Kurs vermittelt die notwendigen Fähigkeiten zur Planung, Installation und Administration eines Salt-Systems. Das Hauptziel dieses Kurses ist es, Salt zu verstehen und erste praktische Erfahrungen im Umgang mit den wichtigsten Komponenten zu sammeln. Zudem erhalten Sie ein Grundverständnis für die Aufgabe Provisionierung. Als Beispiel wird u.A. das Setup eines elastischen HTTP-Cluster umgesetzt.

Die Kursunterlagen finden Sie jederzeit bei GitBooks.

Voraussetzungen

Sie sollten zumindest grundlegende Kenntnisse in der Systemadministration, der Installation von Netzwerkdiensten und der Fehleranalyse in Client-Server Umgebungen besitzen. Am Beispiel einer kleinen Farm virtueller Maschinen werden wir zusammen Salt praktisch ausprobieren.

Inhalt

Einführung

  • Was ist Salt? Komponenten, Einsatzgebiete und Leistungsfähigkeit von Salt
  • Installation des Salt-Master unter CentOS 7, Ubuntu 16.04 oder Debian 8
  • Installation von Salt-Minions unter CentOS 7, Ubuntu 16.04 und Debian 8

Salt-Module: Die Parallelshell für spontane Aufgaben

  • Salt-Module als betriebssystemunabhängige Abstraktionsschicht
  • Minions adressieren per Name, Subnetz, Hostgruppe oder Grain
  • Aufgaben parallel oder seriell ausführen
  • Beispiele:
    • Befehle per Shell ausführen
    • Benutzer anlegen
    • SSH-Key ausrollen
    • Datei editieren
  • Dateien auf und von viele Hosts kopieren

Salt-States: Zustände definieren

  • Salt-States aktivieren und Dateistruktur anlegen
  • Top.sls und init.sls: Der Hierarchiebaum
  • Was ist Yaml und wie sind State-Dateien aufgebaut?
  • Minions in SLS-Dateien adressieren Hostgruppe, Subnetz, Grain oder kombiniert
  • Hosts Rollen zuweisen und benutzerdefinierte Grains
  • Einfache Salt-States erstellen:
    • Benutzer anlegen
    • SSH-Keys ausrollen
    • /etc/hosts anpassen
    • zentralen Syslogserver angeben
    • RPMs oder DEBs per Salt installieren, Beispiel apache
    • Cronjobs zentral verwalten
  • States ausrollen per Push und Pull
  • Dateien vom Master auf Minions verteilen, Beispiel httpd.conf
  • Dateien manipulieren mit Jinja, Beispiel IP-Adresse und Hostname in httpd.conf dynamisch einfügen
  • Variablen und Listen definieren, for-Schleifen in States und beliebigen Dateien einfügen, Beispiel virtuelle Hosts erzeugen
  • Pillars aktivieren
  • Sicherheitskonzept von States vs. Pillars
  • Pillars adressieren
  • Pillars und States kombinieren
  • Salt-Cloud für öffentliche und private Clouds
  • Salt-SSH, Systeme ohne Salt-Minion verwalten

Fortgeschrittene Techniken

  • Yum- und Apt-Repos verwalten und Repos hinzufügen, Beispiele: EPEL und Repoforge, Launchpad PPA
  • Komplexe Softwareinstallationen nach Teilnehmerwunsch, beispielsweise
    • Oracle Java
    • PHP7 und Webserver
    • Proxy-Server
  • Benutzerdefinierte Skripte
  • Skript-Rückgabe auswerten
  • mehrere Pillar-Roots, Beispiel Filesystem und etcd, auf Wunsch MySQL
  • Beispiele:
    • Neue Hosts in ein Backup aufnehmen
    • Backends in einem Webcluster registrieren sich beim Loadbalancer
    • Neue Server registrieren sich im Zabbix-Server
  • Verwaltung von States in Git mit Bitbucket
  • Monitoring von Rollouts per MySQL-Returner
  • Kontrolle von Subnetzen mit Salt-Syndic
  • Automatisierung mit dem Salt-Reactor
  • Automatisierung mit der Salt-API
  • Kommunikation zwischen Minions mit der Salt-Mine