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) DB가 존재하는지 확인합니다. 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) DB가 존재하는지 확인하지 않고

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" 

마스터에서 미니언을 호출하는 대신 미니언에서? 당신이 얻는 데이터는 버스를 통해 전송되지 않는 것 같습니다. 모듈 출력 형식을 확인하세요.

관련 정보