Datenbanken

Pillars aus einer Datenbank lesen am Beispiel MySQL

MySQL/MariaDB vorbereitend

apt-get install default-mysql-server python3-mysqldb

Legen Sie nun einen Benutzer und eine Datenbank an.

cat << EOF | mysql
CREATE USER IF NOT EXISTS 'salt'@'localhost' IDENTIFIED WITH mysql_native_password BY 'salt';
CREATE DATABASE IF NOT EXISTS salt;
GRANT ALL ON salt.* TO 'salt'@'localhost';
EOF

Master.conf erweitern

/etc/salt/master.d/mysql.conf
mysql.host: '127.0.0.1'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306

Sollten Sie bereits eine Datei /etc/salt/master.d/ext_pillar.conf haben, erweitern Sie diese mit dem -mysql Yaml-Block, andernfalls legen Sie die Datei neu an.

/etc/salt/master.d/ext_pillar.conf
ext_pillar:
  - mysql:
      fromdb:
        query: 'SELECT pillar, value FROM pillar WHERE minion_id = %s'
        depth: 2
        as_list: True

Begriff fromdb in Zeile 3 ist ein frei wählbarer Bezeichner. Alle Pillars, die mit der Abfrage aus der Datenbank gelesen werden, werden in ein Dictionary mit der Bezeichnung fromdb gespeichert.

Legen Sie anschließend eine Tabelle an.

Pillars schreiben und lesen

Schreiben

Lesen

Mehr Beispiele in der 📖 Salt-Dokumentation.

Mehrere Spalten

Sie können auch mehrere Spalten in ein Pillar-Dict schreiben.

Wenn die User aus dem Beispiel auf allen Minions verfügbar sein sollen, verwenden Sie eine WHERE-Bedingung, die nie zutrifft. Es ist nicht möglich, die SQL-Abfrage ohne den Platzhalter %s (Minion-ID) anzugeben.

Listen aus der Datenbank lesen

Wenn Sie das Backup-Beispiel so erweitern möchten, dass die Liste der zu sichernden Ordner aus einer Datenbanktabelle gelesen wird, gehen Sie wie folgt vor.

Datenbank anlegen

Die nachfolgende Datenbank besteht aus zwei Spalten, der Minion ID und dem zu sichernden Ordner.

Daten einfügen

Pro Ordner, der ins Backup aufgenommen werden soll, wird eine Zeile eingefügt.

Pillar andocken

Sie können keine Arrays oder Dictionaries in MySQL speichern. Sie müssen auf ein Hilfskonstrukt ausweichen, indem Listenelemente durch Kommata getrennt werden. Jinja kann die kommagetrennte Werte in ein Dictionary umwandeln.

Last updated