Datenbanken
Pillars aus einer Datenbank lesen am Beispiel MySQL
MySQL/MariaDB vorbereitend
apt-get install default-mysql-server python3-mysqldbLegen 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';
EOFMaster.conf erweitern
mysql.host: '127.0.0.1'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306Sollten 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.
ext_pillar:
- mysql:
fromdb:
query: 'SELECT pillar, value FROM pillar WHERE minion_id = %s'
depth: 2
as_list: TrueBegriff 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