Saltstack: Daten mit Salt aus der Datenbank auswählen

Saltstack: Daten mit Salt aus der Datenbank auswählen

Ich möchte mit Saltstack Daten aus einer Datenbanktabelle (hier MySQL) auslesen. In meinem Testszenario habe ich einen Linux-Host namens Salt-Master. Auf diesem Host laufen die Datenbank, der Master und der Minion.

Mein Ziel ist, die Daten mit dem Minion auszuwählen, aber das funktioniert in meiner Umgebung nicht.

1) Sie sehen die Daten in der Tabelle. Die Daten selbst sind für das Szenario nicht relevant.

MariaDB [salt]> SELECT minion_id,qmgr,object_type,value from mqobjects; +--------------+-------+-------------+-------+ | minion_id | qmgr | object_type | value | +--------------+-------+-------------+-------+ | salt-minion2 | QM200 | port | 14200 | | salt-minion2 | QM201 | port | 14201 | | salt-minion2 | QM201 | port | 15201 | | salt-minion2 | QM201 | qlocal | QL1 | | salt-minion2 | QM201 | qlocal | QL2 | | salt-minion3 | QM301 | port | 14300 | | salt-minion3 | QM301 | port | 14301 | | salt-minion3 | QM302 | port | 14302 | +--------------+-------+-------------+-------+ 8 rows in set (0.00 sec)

2) Die Verwendung des Ausführungsmoduls MySQL mit dem Runner liefert mir die gewünschten Ergebnisse.

salt-master:/srv/salt # salt-run salt.cmd mysql.query salt "SELECT minion_id,qmgr,object_type,value from mqobjects" columns: - minion_id - qmgr - object_type - value query time: ---------- human: 0.4ms raw: 0.00037 results: |_ - salt-minion2 - QM200 - port - 14200 |_ - salt-minion2 - QM201 - port - 14201 |_ - salt-minion2 - QM201 - port - 15201 |_ - salt-minion2 - QM201 - qlocal - QL1 |_ - salt-minion2 - QM201 - qlocal - QL2 |_ - salt-minion3 - QM301 - port - 14300 |_ - salt-minion3 - QM301 - port - 14301 |_ - salt-minion3 - QM302 - port - 14302 rows returned: 8 salt-master:/srv/salt #

3) Das Gleiche mit dem Minion zu tun, verursacht keinen Fehler, führt aber auch zu keinem Ergebnis. Warum?

salt-master:/srv/salt # salt salt-master mysql.query salt "SELECT minion_id,qmgr,object_type,value from mqobjects" salt-master: ---------- salt-master:/srv/salt #

4) Ich habe es auch mit einer SLS-Datei versucht.

a) Mit Prüfung, ob Datenbank vorhanden ist salt-master:/srv/salt # cat cmdb/MqObjects2Grains.sls queryMqObjects: mysql_query.run: - name: salt - database: mysql - query: "SELECT minion_id,qmgr,object_type,value from mqobjects" - check_db_exists: True salt-master:/srv/salt # salt salt-master state.apply cmdb.MqObjects2Grains salt-master: ---------- ID: queryMqObjects Function: mysql_query.run Name: salt Result: None Comment: Database salt is not present Started: 10:32:33.146025 Duration: 31.427 ms Changes:
Summary for salt-master ------------ Succeeded: 1 (unchanged=1) Failed: 0 ------------ Total states run: 1 Total run time: 31.427 ms salt-master:/srv/salt #

b) Ohne Prüfung, ob Datenbank vorhanden ist

salt-master:/srv/salt # cat cmdb/MqObjects2Grains.sls queryMqObjects: mysql_query.run: - name: salt - database: mysql - query: "SELECT minion_id,qmgr,object_type,value from mqobjects" - check_db_exists: False salt-master:/srv/salt # salt salt-master state.apply cmdb.MqObjects2Grains salt-master: ---------- ID: queryMqObjects Function: mysql_query.run Name: salt Result: True Comment: {} Started: 10:39:18.539604 Duration: 11.422 ms Changes:
---------- query: Executed Summary for salt-master ------------ Succeeded: 1 (changed=1) Failed: 0 ------------ Total states run: 1 Total run time: 11.422 ms salt-master:/srv/salt #

Kann mir jemand Hinweise geben, was ich falsch mache? Das wäre großartig!

Antwort1

Können Sie versuchen,

salt-call mysql.query salt "SELECT minion_id,qmgr,object_type,value from mqobjects" 

auf dem Minion, anstatt den Minion vom Master aus aufzurufen? Es scheint, dass die Daten, die Sie erhalten, einfach nicht über den Bus übertragen werden. Überprüfen Sie das Ausgabeformat Ihres Moduls.

verwandte Informationen