2016-04-08 5 views
0

私はfile.managedを使用して状態を持っています。これは、ピラーのキーからjinja forループを介して設定ファイルを生成します。saltstack管理ファイルのピラーを照会するときのグレインデータを含む

私の柱は次のようになります。

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

のようなものがあるの目標は、一般的にのみ対応する柱のファイルに必要な変更を制限することがある、新しいサーバを追加するとき他の提案も歓迎されます。

答えて

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

私は、おかげで、あなたの問題を解決することを願っています。

+0

が完璧です。私が探していたものとまったく同じです。 – savamane

関連する問題