我有一个 Salt 脚本,其中之一就是初始化 Postgres 数据库。初始化数据库后,我想从文件中读取一些属性,并INSERT
针对每个键/值对执行(进入配置表)。
我见过 Salt 的psql_查询这应该可以解决部分问题。我的问题是,如何迭代属性文件中的对,然后对每个条目进行查询?
因此,文件
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';
如果有比属性文件更好的方法来传递键/值,那也很好。
答案1
如果您可以将这些属性检查到支柱中,那么使用 Jinja 迭代每个 K/V 对将非常容易。
假设你的支柱数据中有以下内容:
/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 条目并对所有条目运行查询。
如果属性是动态生成的,您可以研究通过 salt 将它们作为支柱数据加载外部支柱