Salt & Etcd
Etcd als Alternative zur Salt-Mine
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. 📖 Weitere Informationen.
Voraussetzungen
Installieren Sie den Etcd und die vom Salt-Master benötigten Python-Module.
apt install etcd python3-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.
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 HTTP API 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"
Salt Etcd Modul
Der Minion kann auch mit einem 📖 Salt-State-Modul mit dem Etcd kommunizieren. Dies setzt aber voraus, dass die Python-Module und Zugangsdaten im Minion verfügbar sind.
Last updated