Zusätzliche (externe) Pillars angeben
Standarpillars hostspezifisch überschreiben
Wenn Sie die Pillar-Konfiguration des Master wie folgt ändern, können Sie pro Host - identifiziert über die Minion-ID - eine Pillar-Datei anlegen.
pillar_roots:
base:
- /srv/pillar
ext_pillar:
- file_tree:
root_dir: /srv/pillar
render_default: yaml
template: True
Nach dem Neustart des Master legen Sie das Basisverzeichnis /srv/pillar/hosts
an, indem Sie nun für jeden Minion einen Ordner anlegen können. Existiert der Ordner, werden alle Datei als Yaml-Dateien eingelesen.
Legen Sie z.B. die Datei /srv/pillar/hosts/my-minion-17/backup
mit folgendem Inhalt an:
include:
- /etc
- /root
- /var/www
Testen Sie es mit my-minion-17 mit salt-call pillar.fetch backup
.
In States können Sie mit folgender Jinja-Schleife auf die Pillar-Werte zugreifen.
{% for dir in pillar['backup']['include'] %}include = {{ dir }}
{% endfor -%}
Die Dateien sollten keine Endung haben, da der Name der Datei bereits die erste Ebene des Python-Dictionarys bildet.
Überschreiben
Die host-spezifischen Pillars haben Vorrang.
Sie können einen allgemeingültige Standardwerte über /srv/pillar/top.sls
definieren und diese pro Host durch Anlegen einer entsprechenden Datei im Ordner /srv/pillar/hosts/<MINION_ID>/<KEY>
überschreiben.
Pillars in Ordnerstrukturen speichern
/etc/salt/master
ext_pillar:
- file_tree:
root_dir: /srv/host-pillars/
follow_dir_links: True
Achtung: Achten Sie auf die Einrückung. Vor
root_dir
6 Leerzeichen
mkdir /srv/host-pillars/hosts
Nun können Sie für jeden Minion eine Ordner an, wobei Ordnername gleich Minion_id sein muss, z.B.:
mkdir /srv/host-pillars/hosts/ubuntu_minion
In diesem Ordner legen Sie eine Datei mit Inhalt an. Dateiname ist nun Pillar-Key und Dateiinhalt ist Pillar-Value. Beispiel:
echo Berlin>city
Nun können Sie per Jinja auf pillar['city']
zugreifen.
Sie können auch eine Ordnerhierarchie anlegen, z.B.
mkdir Company
echo Supercompany>Company/name
Auf diesen Pillar greifen Sie über pillar['Company']['name']
zu.
Beachten Sie, dass dieser Pillar pro Minion definiert werden muss. Definieren Sie ggf. einen all gemeingültigen Default
Testen Sie, welche Pillar-Items ein Minion lesen darf mit
salt-call pillar.items