Salt Automation Infrastructure Management

Overview

Es gibt viele Tools für das Konfigurations- und Automatisierungsmanagement, wie Ansible, Puppet, Salt und mehr. Unser Werkzeug der Wahl ist in den meisten Fällen Stalt. Salt ist Python-basiert mit einer Server/Minion-Struktur, und dies ist einer der Hauptgründe, warum wir Salt gerne verwenden. Dies erleichtert die Handhabung von Firewall-Regelsätzen und Sicherheitsberechtigungen auf den Servern. Darüber hinaus ist es in Python geschrieben, und da wir Python an vielen Stellen verwenden, passt es gut in unsere Welt und wir können es nach unseren Bedürfnissen erweitern.

Salt Examples

Wir verwenden Salt in vielen Projekten, von kleinen Umgebungen, in denen wir es nur verwenden, um einige Benutzer auf den Servern zu verwalten, bis hin zu großen Infrastrukturen, in denen jede Konfiguration durch Salt verwaltet wird. Salt bietet hier viele nützliche Methoden zum Verwalten von Konfigurationen. Vom einfachen YAML-basierten Ansatz bis hin zu pyDSL mit vollständigem Python-Code.

Ein solches Konfigurationsbeispiel könnte das Management von NTP sein:

ntp:
  pkg.installed: []
  service.running:
    - name: ntp
    - require:
      - pkg: ntp
  file.managed:
    - name: /etc/ntp.conf
    - user: root
    - group: root
    - mode: 644
    - template: jinja
    - source: salt://ntp/ntp.conf
    - require:
      - pkg: ntp
    - watch_in:
      - service: ntp
Das obige Beispiel ist eine Salt-State-Konfiguration mit YAML, um die NTP-Konfiguration eines Servers zu verwalten. Es definiert, dass das Paket ntp installiert werden muss und kümmert sich um die in /etc/ntp.conf gespeicherte Konfiguration basierend auf dem jinja2-Template. Wenn sich dabei die Konfiguration ändert, wird der NTP-Dienst neu gestartet.

Mit der pyDSL-Sprache kann man komplexere Themen abdecken. Diese bietet die Möglichkeit, Python-Code in Kombination mit Salt-Methoden zu schreiben.

#!pydsl

services = []
for service in __salt__['pillar.get']('services', {}):
  if __salt__['pillar.get'](f'services:{service}:active', False) is True:
    services.append(f'services/{service}')

include(*services)
In diesem Beispiel verwenden wir Python-Code, um ein Dict von Diensten zu durchlaufen, die wir von Salt Pillar erhalten. Wenn der Dienst in Pillar aktiv ist, wird der Service inkludiert und verarbeitet. In diesem Beispiel werden DSL-Methoden wie include oder __salt__ verwendet, die uns einen schnellen Zugriff auf die Salt-Funktionalität ermöglichen. Wir verwenden auch Salt Pillar, eine sichere Möglichkeit, Werte für jeden Server zu speichern.

Fazit

Salt bietet eine flexible Möglichkeit, Ihre Infrastruktur und Konfigurationen zu verwalten. Es ermöglicht Ihnen, Hunderte von Servern parallel zu verwalten. zurück zur Projektübersicht
  • salt
  • automation
  • infrastructure
  • python3