在 saltstack 管理文件中查询支柱时包括谷物数据
including grain data when querying pillar in saltstack managed file
我有一个使用 file.managed
的状态,它通过 jinja for 循环从 pillar 中的一个键生成一个配置文件。
我的柱子是这样的:
configuration:
server01:
key1: value1
key2: value2
server02:
key03: value03
key04: value04
和托管文件:
{% set kv = pillar['configuration']['server01'] %}
{% for key, value in kv.iteritems() %}
{{ key }}:{ value }};
{% endfor %}
我现在在状态文件中区分不同服务器的方式是
config:
file.managed:
- name: /etc/config.conf
- source: salt://files/{{ grains['id'] }}.conf.jinja
- template: jinja
但这不太理想,因为我必须为每个服务器创建一个几乎相同的文件。
有没有办法用实际服务器的ID动态替换server01
,比如
{% set kv = pillar['configuration']['{{ grains[id''] }}'] %}
目标是在添加新服务器时通常将必要的更改仅限于相应的支柱文件,因此也欢迎其他建议。
我认为你应该在你的状态文件中使用支柱信息。
您的状态文件如下所示:
{% if grains['id'] in pillar['configuration'] %}
{% set nodeinfo = pillar['configuration'][grains['id']] %}
config:
file.managed:
- name: /etc/config.conf
- source: salt://conf.jinja
- template: jinja
- defaults :
nodeinfo: {{nodeinfo}}
{% endif %}
然后,conf.jinja:
{% for key, value in nodeinfo.iteritems() -%}
{{ key }}:{{ value }};
{% endfor -%}
希望能解决你的问题,谢谢
我有一个使用 file.managed
的状态,它通过 jinja for 循环从 pillar 中的一个键生成一个配置文件。
我的柱子是这样的:
configuration:
server01:
key1: value1
key2: value2
server02:
key03: value03
key04: value04
和托管文件:
{% set kv = pillar['configuration']['server01'] %}
{% for key, value in kv.iteritems() %}
{{ key }}:{ value }};
{% endfor %}
我现在在状态文件中区分不同服务器的方式是
config:
file.managed:
- name: /etc/config.conf
- source: salt://files/{{ grains['id'] }}.conf.jinja
- template: jinja
但这不太理想,因为我必须为每个服务器创建一个几乎相同的文件。
有没有办法用实际服务器的ID动态替换server01
,比如
{% set kv = pillar['configuration']['{{ grains[id''] }}'] %}
目标是在添加新服务器时通常将必要的更改仅限于相应的支柱文件,因此也欢迎其他建议。
我认为你应该在你的状态文件中使用支柱信息。
您的状态文件如下所示:
{% if grains['id'] in pillar['configuration'] %}
{% set nodeinfo = pillar['configuration'][grains['id']] %}
config:
file.managed:
- name: /etc/config.conf
- source: salt://conf.jinja
- template: jinja
- defaults :
nodeinfo: {{nodeinfo}}
{% endif %}
然后,conf.jinja:
{% for key, value in nodeinfo.iteritems() -%}
{{ key }}:{{ value }};
{% endfor -%}
希望能解决你的问题,谢谢