我试着用Jinja解析一个properties文件来设置变量。Saltstack - 解析YAML属性文件来设置Jinja变量 - For循环
我多发的类别和子类别在该文件中,如:
- jboss_container
- 一些属性
- foobar的
- jboss_datasource_install
- datasource1
- PROP1
- PROP2
- datasource2
- datasource1
- jboss_app_deploy
- APP1
- APP2
目标是设置每个类别的变量并在循环中重用它们。 - >例如,我想在每个子类别
foobar.properties.yml安装2个的JBoss数据源和循环:
jboss_container:
jboss_container_values:
jboss_container_install: 'True'
jboss_app_name: 'foobar'
jboss_version: 'x.x.x'
...
jboss_datasource_install:
datasource1:
jboss_datasource_install: 'True'
jboss_datasource_name: 'foobar'
jboss_datasource_jta: 'true'
...
datasource2:
jboss_datasource_install: 'True'
...
init.sls:
{% import_yaml 'foobar_properties.yml' as jboss_apps %}
% for jboss_container, jboss_container_values in jboss_apps.iteritems() %}
{% for key, value in jboss_container_values.items() %}
{% if value.get('jboss_container_install') != 'False' %}
# Do stuff - {{ value.jboss_app_name }}
{% endif %}
{% endfor %}
{% endfor %}
{% for jboss_datasource_install, jboss_datasource_install_name in jboss_apps.iteritems() %}
{% for key, value in jboss_datasource_install_name.items() %}
{% if value.get('jboss_datasource_install') != 'False' %}
# Do stuff - {{ value.jboss_datasource_install }}
{% endif %}
{% endfor %}
{% endfor %}
实际上在盐中发生此错误:
神社变量“字典对象有没有属性“jboss_app_name”
任何想法如何做到这一点?
非常感谢:)通过jboss_datasource_install
值== == True的修复方法对我来说非常合适。谢谢 – yrein
但是{%for key,jboss_apps ['jboss_container'] ['jboss_container_values']%}中的值失败,失败:Jinja错误:解压太多值 – yrein
有一个'iteritems()'丢失,我修正了它。 – flyx