2017-01-01 20 views
1

私はsaltstackでネストされたテンプレートの継承に関するいくつかの問題があります。saltstack jinja2ネストされたテンプレートの継承

私は力仕事をしている、を準備し、その後に「ceph_mon_config柱にCPU等、MEMの値を引くを作成に文字列「ceph_mon_config」を渡すためにcreate_monを期待してい。レンダラーが到達したとき、それは現状で:

Rendering SLS 'base:/apps/ceph/create-mon' failed: Jinja variable 'salt.pillar object' has no attribute '{% block pillar_id %}{% endblock pillar_id %}' 

任意のアイデア:

{% block cpu %}{{ pillar['{% block pillar_id %}{% endblock pillar_id %}']['cpu'] }}{% endblock cpu %} 

を、それは文字通りそれを解釈しているように見えますか?

ありがとうございます!

create_mon.sls

{% extends "states/system/vm/create.sls" %} 

{% block pillar_id %}ceph_mon_config{% endblock pillar_id %} 

virsh create /kvmfs/vms/{{ pillar['ceph_mon_config']['hostname'] }}/config.xml: 
    cmd.run: 
    - requires: 
     - sls: /states/system/vm/create 

create.sls

{% extends "states/system/vm/prepare.sls" %} 

{% block cpu %}{{ pillar['{% block pillar_id %}{% endblock pillar_id %}']['cpu'] }}{% endblock cpu %} 
{% block mem %}{{ pillar['ceph_mon_config']['mem'] }}{% endblock mem %} 
{% block network %}{{ pillar['ceph_mon_config']['network'] }}{% endblock network %} 
{% block os %}{{ pillar['ceph_mon_config']['os'] }}{% endblock os %} 
{% block hostname %}{{ pillar['ceph_mon_config']['hostname'] }}{% endblock hostname %} 
{% block disk %}{{ pillar['ceph_mon_config']['disk'] }}{% endblock disk %} 

prepare.sls

/kvmfs/vms/{% block hostname %}{% endblock hostname %}/config.xml: 
    file.managed: 
    - source: https://git.cybbh.space/vta/saltstack/raw/master/apps/virsh/files/common.xml 
    - makedirs: True 
    - template: jinja 
    - skip_verify: True 
    - defaults: 
     name: {{ self.hostname() }} 
     mem: {% block mem %}{% endblock mem %} 
     cpu: {% block cpu %}{% endblock cpu %} 
     network: {% block network %}{% endblock network %} 

/kvmfs/vms/{{ self.hostname() }}/disk0.qcow2: 
    file.copy: 
    - source: /kvmfs/images/{% block os %}{% endblock os %}-latest 

qemu-img resize /kvmfs/vms/{{ self.hostname() }}/disk0.qcow2 {% block disk %}{% endblock disk %}: 
    cmd.run: 
    - requires: 
     - /kvmfs/vms/{{ self.hostname() }}/disk0.qcow2 

/kvmfs/vms/{{ self.hostname() }}/data/meta-data: 
    file.managed: 
    - source: https://git.cybbh.space/vta/saltstack/raw/master/apps/virsh/files/common.metadata 
    - makedirs: True 
    - template: jinja 
    - skip_verify: True 
    - defaults: 
     hostname: {{ self.hostname() }} 

/kvmfs/vms/{{ self.hostname() }}/data/user-data: 
    file.managed: 
    - source: https://git.cybbh.space/vta/saltstack/raw/master/apps/virsh/files/common.userdata 
    - makedirs: True 
    - skip_verify: True 

genisoimage -o /kvmfs/vms/{{ self.hostname() }}/config.iso -V cidata -r -J /kvmfs/vms/{{ self.hostname() }}/data/meta-data /kvmfs/vms/{{ self.hostname() }}/data/user-data: 
    cmd.run:  
    - requires: 
     - /kvmfs/vms/{{ self.hostname() }}/data/metadata 
     - /kvmfs/vms/{{ self.hostname() }}/data/userdata 

答えて

0

神社が行いますネストされた評価は許可されませんが、ブロックだけでなく、 'extends'を使用するときにも変数がテンプレートからテンプレートに渡されます。

create_mon

{% set pillar_id = 'ceph_mon_config' %} 

予想通り、この作品

... 
{% extends "states/system/vm/prepare.sls" %} 

{% block cpu %}{{ pillar[pillar_id]['cpu'] }}{% endblock cpu %} 
... 

を作成します。

関連する問題