Saltstack: ソルトを使用してデータベースからデータを選択する

Saltstack: ソルトを使用してデータベースからデータを選択する

saltstack を使用してデータベース テーブル (ここでは mysql) からデータを選択したいです。テスト シナリオでは、salt-master という Linux ホストがあります。このホストでは、データベース、マスター、およびミニオンが実行されています。

私の目標はミニオンでデータを選択することですが、これは私の環境では機能しません。

1) 表にデータが表示されます。データ自体はシナリオとは関係ありません。

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) ランナーで実行モジュール mysql を使用すると、必要な結果が得られます。

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) ミニオンで同じことを実行してもエラーは発生しませんが、結果も得られません。なぜでしょうか?

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) sls ファイルでも試してみました。

a) データベースが存在するかどうかをチェックする 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) データベースが存在するかどうかのチェックなし

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 #

誰か私に何かヒントをくれませんか、何が間違っているのでしょうか? 教えていただけると嬉しいです!

答え1

使ってみてはいかがでしょうか

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

マスターからミニオンを呼び出す代わりに、ミニオンで呼び出しますか? 取得したデータがバス経由で転送されていないようです。モジュールの出力形式を確認してください。

関連情報