У меня есть сценарий Salt, который, помимо прочего, инициализирует базу данных Postgres. После инициализации базы данных я хочу прочитать некоторые свойства из файла и выполнить INSERT
(в таблицу конфигурации) для каждой пары ключ / значение.
Я видел соли psql_query что должно решить часть проблемы. У меня вопрос: как мне перебрать пары в моем файле свойств, а затем выполнить запрос для каждой записи?
Итак, файл
key1 = value1
key2 = other value
следует перевести на соль
my_config_key1:
- postgres.psql_query:
query: UPDATE configuration SET value = 'value1' WHERE key = 'key1';
my_config_key2:
- postgres.psql_query:
query: UPDATE configuration SET value = 'other value' WHERE key = 'key2';
Если есть лучший способ, чем файл свойств для передачи ключей / значений, это тоже будет хорошо.
Если вам удастся зафиксировать эти свойства в столбце, будет очень легко перебирать каждую пару K / V с помощью Jinja.
Допустим, у вас есть следующие данные в столбце:
/srv/pillar/pg-properties.sls:
pg_properties:
key1: value1
key2: value2
и государство /srv/salt/pg-populate.sls:
{% for key, value in pillar.get('pg_properties', {}).items() %}
my_config_{{ key }}:
- postgres.psql_query:
query: UPDATE configuration SET value = '{{ value }}' WHERE key = '{{ key }}';
{% endfor %}
Salt будет перебирать каждую запись keyX и запускать запрос для всех из них.
Если свойства генерируются динамически, вы можете изучить их загрузку как данные столба через соль ext_pillar