在saltstack托管文件中查询柱子时包含谷物数据

时间:2016-04-08 21:28:19

标签: jinja2 salt-stack

我有一个使用file.managed的状态,它通过jinja生成一个配置文件,用于从支柱中的键循环。

我的支柱看起来像这样:

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''] }}'] %}

目标是在添加新服务器时通常仅将必要的更改限制为相应的支柱文件,因此也欢迎其他建议。

1 个答案:

答案 0 :(得分:2)

我认为您应该在州档案中使用支柱信息 你的州档如吼:

{% 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 -%}

我希望这能解决你的问题,谢谢。