Es werden verschiedene Säulen benötigt
Säulen sind ein sicherer Datenspeicher in Salt. Daher werden sie zunächst verwendet, um den Zugriff auf wichtige Daten (Zertifikate, Anmeldungen, Kennwörter) abzugrenzen.
Zusätzlich zu den Standardsäulen verfügt Salt über das Modul ext_pillar , das eine Schnittstelle für die Verbindung mit externen Datenquellen bietet und Säulen aus diesen Quellen in einem gemeinsamen Wörterbuch generiert.
Sie können beispielsweise Daten aus MySQL, Postgres, Redis, Mongo, Git oder sogar aus der Ausgabe eines Skripts / Befehls - cmd_json , cmd_yaml - entnehmen .
Eine vollständige Liste der Module wird auf der offiziellen SaltStack-Website veröffentlicht .
Wenn Sie eine nicht standardmäßige Situation haben und die verfügbaren Module nicht zu Ihnen passen, können Sie Ihre eigenen schreiben und in / usr / lib / python3 / dist-packages / salt / pillar / ablegen.Danach müssen Sie den Assistenten neu starten.
Ein Beispiel für ein solches Modul:
#/etc/salt/master/conf.d/pillar.conf
ext_pillar:
- dummy: dummy
#/usr/lib/python3/dist-packages/salt/pillar/dummy.py
def ext_pillar(minion_id, pillar, *args, **kwargs):
dummy = {'dummy': 'what u want mann?'}
return dummy
Von allen verfügbaren Modulen erwies sich Pillarstack als das interessanteste und relevanteste für unser Team. Jetzt sagen wir Ihnen warum.
Einführung in PillarStack
Stack oder Pillarstack ist laut der offiziellen Dokumentation auf der Website "eine einfache und flexible YAML-Säule, die Säulen von Säulen lesen kann" .
Sie können die zuvor in den Säulen gelesenen Säulen verwenden. Dies bedeutet, dass wir die Säule aus der vorherigen Konfiguration verwenden können. Und es ist mega-bequem! Lassen Sie uns zeigen, wie es funktioniert:
, :
#/etc/salt/conf.d/pillarstack.conf
ext_pillar:
- stack:
- /srv/pillar/stack1.cfg
- /srv/pillar/stack2.cfg
- /srv/pillar/stack3.cfg
#/srv/pillar/stack1.cfg
# stack "" ,
# 2 yml ,
core.yml
common/*.yml
osarchs/{{ __grains__['osarch'] }}.yml
oscodenames/{{ __grains__['oscodename'] }}.yml
hosts/{{ minion_id }}/roles.yml
#/srv/pillar/stack2.cfg
# stack stack1.cfg
# , , roles
# stack yml
{% for role in stack.roles %}
roles/{{ role }}/*.yml
{% endfor %}
#/srv/pillar/stack3.cfg
# stack "" stack1.cfg stack2.cfg
#
creds/{{ stack.db.host }}/*.yml
Jede Konfiguration kann als Ebene dargestellt werden. In jeder dieser Ebenen können wir Daten aus den vorherigen Ebenen verwenden.
Die folgenden Variablen stehen bei der Konfiguration von Säulen zur Verfügung:
- Körner - Zielkonfigurationen nach Körnern
- opts - Targeting von Konfigurationen nach Optionen in der Konfiguration
- Säule - Säulen, die vor der Verarbeitung des aktuellen ext_pillar: -Stacks gebildet wurden
# , stack
# stack grains pillar
# stack.cfg , pillar
ext_pillar:
- stack:
grains:cpuarch:
x86_64:
- /srv/pillar/stack1.cfg
- /srv/pillar/stack2.cfg
pillar:environment:
dev: /srv/pillar/dev/stack.cfg
prod: /srv/pillar/prod/stack.cfg
# stack: grains, pillar
# pillar stack1.cfg, stack2.cfg
# 'environment', stack.cfg
ext_pillar:
- stack:
grains:custom:grain:
value:
- /srv/pillar/stack1.cfg
- /srv/pillar/stack2.cfg
- stack:
pillar:environment:
dev: /srv/pillar/dev/stack.cfg
prod: /srv/pillar/prod/stack.cfg
In yml-Dateien können Sie verwenden:
- __opts__: Konfigurationsoptionen
- __Körner__: Schergenkörner
- Säule: Säulen von anderen ext_pillar- oder Standard-Säulen (die in top.sls)
- Stapel: Akkumulierter Säulenstapel, einschließlich der aktuellen Konfiguration.
Wenn Sie nur auf Pillarstack umsteigen, finden Sie im Folgenden einige Punkte, die Sie beachten sollten:
1. Die rekursive Einbeziehung funktioniert nur in Pillarstack. Der Stapel enthält keine Verzeichnisse, nur Dateien.
# pillar
# top.sls
base:
'*':
- dir1.* # /dir1/dir2/dir3/*
# stack
# stack.cfg
/dir1/*
/dir1/dir2/*
/dir1/dir2/dir3/*
2. Standardverhalten beim Zusammenführen von Listen:
- Säulenlisten werden überschrieben
- Stack - Die Merge-Last-Strategie wird verwendet (die Listen werden hinzugefügt).
Säulenfusionsstrategien ermöglichen eine sehr flexible Anpassung der Säulen.
Eine ausführliche Beschreibung mit Beispielen finden Sie in der Dokumentation.
Um jede Strategie zusammenzufassen:
- merge-last (Standard): rekursive Zusammenführung, letztes Wörterbuch / letzte Liste hat Vorrang
- zuerst zusammenführen: rekursives Zusammenführen, Priorität wird dem ersten Wörterbuch / der ersten Liste gegeben
- entfernen: Entfernen Sie die angegebenen Elemente
- überschreiben: Wörterbuch / Liste überschreiben.
Erläuterung: Bei jeder Zusammenführung sind zwei Wörterbücher / Listen beteiligt. Nennen wir sie das erste und das letzte. Die
Strategie wird als erstes Element des Wörterbuchs / der Liste angegeben, auf das sie angewendet werden muss.
Die Hauptsache ist, sich nicht von übermäßigem Einsatz von Strategien mitreißen zu lassen, da dies die Konfiguration erschwert. Vielleicht lohnt es sich in diesem Fall, die Organisation der Säulen zu überdenken.
Fazit
Mit Säulen können Sie den Zugriff auf vertrauliche Daten einschränken. Wenn die Daten wachsen, werden die Szenarien für ihre Verwendung immer komplexer. Daher ist es wichtig, ein praktisches Tool zu verwenden, um sie zu organisieren. Im Moment ist dies für unser Team ein Säulenstapel. In Zukunft planen wir die Bereitstellung eines Tresors.
Es erscheint uns überraschend, warum Pillarstack die Standardsäule noch nicht ersetzt hat, da sie viel bequemer und flexibler ist und Strategien sehr hilfreich sind, wenn das Verhalten der Stapelvariablen punktuell geändert werden muss. Was denken Sie? Verwenden Sie Pillarstack in Ihrer Arbeit?