Saltstack
  • Willkommen
  • Einführung
  • Testumgebung
    • Salt-Master öffentlicher FQDN
  • Salt installieren
    • Minions und Master "verheiraten"
  • Salt Module
    • Beispiel Benutzer anlegen
    • Dateien hin und her kopieren
  • Salt States
    • Yaml verstehen
    • Editoren anpassen
    • Beispiel Benutzer verwalten
    • Abhängigkeiten
    • Dateien editieren
    • Shell Kommandos
    • Beispiel Caddy Webserver
  • Linter
  • Minions adressieren
    • Grains
    • Hostgruppen - Node Groups
  • Jinja
    • Beispiel Caddy PHP
  • top.sls
  • Output
  • Pillars
    • Hosts Pillars
    • GPG
    • Vault
    • Datenbanken
    • Beispiel Benutzerverwaltung
  • Salt-Mine
  • Eigene Module erstellen
  • Orchestrierung
  • Returner & Job-Cache
  • Salt SSH
  • Salt API
  • Salt Cloud
    • Hinweise und Fallen
    • KVM und Libvirt
    • Scaleway
    • Digitalocean
    • Hetzner Cloud
    • eigene Deploymentscripte
    • Dynamische Portforwarding
    • Keys automatisch aufräumen
    • Start Aktionen
  • GIT
    • Alternative CD
  • Salt Reactor
  • Salt für Windows
    • Software ohne Repository installieren
    • PowerShell
    • Chocolatey Paktemanager
    • Lokales Logon Skript
    • Software Repository
  • Beispiele
    • Restic Backup
    • Apache Web-Proxy
    • Wartungstunnel
    • Unattended Upgrades
  • Salt & Etcd
  • Salt ACS
Powered by GitBook
On this page
  • Was ist Etcd?
  • Voraussetzungen
  • Werte schreiben und lesen
  • Werte per State in Etcd speichern

Salt & Etcd

Etcd als Alternative zur Salt-Mine

PreviousUnattended UpgradesNextSalt ACS

Last updated 3 years ago

Was ist Etcd?

Etcd ist ein stark konsistenter, verteilter Key-Value-Speicher, der eine zuverlässige Möglichkeit zum Speichern von Daten bietet, auf die ein verteiltes System oder ein Cluster von Rechnern zugreifen muss. Er bewältigt die Wahl des Leitrechners während der Netzwerkpartitionierung und toleriert den Ausfall eines Rechners, sogar des Leitrechners. 📖 .

Voraussetzungen

Installieren Sie den und die vom Salt-Master benötigten Python-Module.

apt install etcd python3-etcd  
/etc/default/etcd
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

Teilen Sie dem Salt-Master mit, wo der Etcd lauscht und registrieren Sie den Etcd als weitere Quelle für Pillars.

/etc/salt/master.d/extpillar.conf
my_etcd_config:
  etcd.host: 127.0.0.1
  etcd.port: 2379
ext_pillar:
  - etcd: my_etcd_config

Werte schreiben und lesen

Etcd stellt eine einfache zum Schreiben, lesen und löschen von Key-Value-Paaren bereit, die z.B. mit Curl nach dem Schema http://<HOST>:<PORT>/v2/keys/<KEY> -X<VERB> -d value="<VALUE>" bedient werden kann.

curl http://127.0.0.1:2379/v2/keys/message -XPUT -d value="Hello world"

Die Werte werden als globale, d.h. nicht an Hosts gebundene, Pillars verfügbar,

salt una pillar.items
una:
    ----------
    message:
        Hello world

In Etcd können aus "Ordner" erstellt werden. Key-Value-Paare innerhalb eines Ordners werden als Listen in Pillars abgebildet.

# Create a so-called directory that will respreseng a python list
curl http://127.0.0.1:2379/v2/keys/clusternodes -XPUT -d dir=true

# Append a key/value pair to the directory aka list
curl http://127.0.0.1:2379/v2/keys/clusternodes/una \
-XPUT -d value="192.168.1.1:8080"

# Append another key/value pair to the directory aka list
curl http://127.0.0.1:2379/v2/keys/clusternodes/delia \
-XPUT -d value="192.168.1.2:8080"
test:
  cmd.run:
    - name: |
        {%- for k,v in pillar['clusternodes'].items() %}
        echo {{k}} {{v}}
        {%- endfor %}

Mit der HTTP-Methode DELETE werden Keys aus dem Speicher gelöscht.

curl http://127.0.0.1:2379/v2/keys/clusternodes/una -XDELETE

Werte per State in Etcd speichern

Um Werte in den Etcd zu speichern, haben Sie zwei Möglichkeiten.

Curl + cmd.run

Der einfachste Weg, Daten im Etcd abzulegen, ist der Weg über cmd.run und curl.

join-cluster:
  cmd.run:
    - name: >-
        curl -fs http://{{ pillar['etcd'] }}/v2/keys/clusternodes/{{ grains['id'] }} 
        -XPUT 
        -d value="{{ grains['ipv4'] }}:8080"

Achten Sie auf 👉 -f im curl Commando.

man curl:

-f, --fail (HTTP) Fail silently (no output at all) on server errors. This is mostly done to enable scripts etc to better deal with failed attempts. In normal cases when an HTTP server fails to deliver a document, it returns an HTML document stating so (which often also describes why and more). This flag will prevent curl from outputting that and return error 22.

Salt Etcd Modul

Der Minion kann auch mit einem 📖 mit dem Etcd kommunizieren. Dies setzt aber voraus, dass die Python-Module und Zugangsdaten im Minion verfügbar sind.

Weitere Informationen
Etcd
HTTP API
Salt-State-Modul