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

results matching ""

    No results matching ""