Назад | Перейти на главную страницу

Saltstack: выберите данные из базы данных с помощью соли

Я хочу выбрать данные из таблицы базы данных (здесь mysql) с помощью saltstack. В моем тестовом сценарии у меня есть хост Linux под названием salt-master. На этом хосте запущена база данных, мастер и миньон.

Моя цель - выбрать данные с помощью миньона, но в моей среде это не работает.

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.

а) С проверкой наличия БД 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 #

б) Без проверки наличия БД

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 #

Кто-нибудь может мне подсказать, что я делаю не так? Это было бы прекрасно!

Вы можете попробовать использовать

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

на миньона вместо вызова миньона от мастера? Похоже, что полученные данные просто не передаются по шине. Проверьте формат вывода ваших модулей.