2016-04-08 3 views
0

Ich habe einen Zustand unter Verwendung file.managed, die über eine jinja for-Schleife von einem Schlüssel in der Säule eine Konfigurationsdatei erzeugt.Korndaten einschließlich wenn Säule in saltstack abfragt verwalteten Datei

sieht Meine Säule wie folgt aus:

configuration: 
    server01: 
    key1: value1 
    key2: value2 
    server02: 
    key03: value03 
    key04: value04 

und der verwalteten Datei:

{% set kv = pillar['configuration']['server01'] %} 
{% for key, value in kv.iteritems() %} 
{{ key }}:{ value }}; 
{% endfor %} 

Die Art, wie ich zwischen verschiedenen Servern jetzt in meiner Statusdatei unterscheiden

ist
config: 
    file.managed: 
    - name: /etc/config.conf 
    - source: salt://files/{{ grains['id'] }}.conf.jinja 
    - template: jinja 

aber das ist weniger als ideal, da ich für jeden Server eine fast identische Datei erstellen muss.

Gibt es eine Möglichkeit, um dynamisch server01 mit der ID des aktuellen Server zu ersetzen, so etwas wie

{% set kv = pillar['configuration']['{{ grains[id''] }}'] %} 

Das Ziel ist in der Regel die notwendigen Änderungen nur auf die entsprechenden Säule Datei zu begrenzen, wenn das Hinzufügen eines neuen Server Daher sind auch andere Vorschläge willkommen.

Antwort

2

Ich glaube, Sie Säule Informationen in Ihrer Statusdatei verwendet werden sollen.
Ihre Statusdatei wie unten:

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

dann, conf.jinja:

{% for key, value in nodeinfo.iteritems() -%} 
{{ key }}:{{ value }}; 
{% endfor -%} 

ich hoffe, dass Ihr Problem lösen, danke.

+0

perfekt. macht genau das, wonach ich gesucht habe. – savamane

Verwandte Themen