【发布时间】:2017-07-28 13:36:30
【问题描述】:
我尝试使用 Jinja 解析属性文件以设置变量。
我在这个文件中有多个类别和子类别,例如:
- jboss_container
- 一些属性
- foobar
- jboss_datasource_install
- 数据源1
- 道具1
- 道具2
- 数据源2
- 数据源1
- jboss_app_deploy
- app1
- app2
目标是设置每个类别的变量并在 for 循环中重用它们。 --> 例如,我想在每个子类别上安装 2 个 jboss 数据源和循环
foobar.properties.yml:
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 %}
在Salt中居然出现了这个错误:
Jinja 变量 'dict object' 没有属性 'jboss_app_name'
任何想法如何做到这一点?
非常感谢:)
【问题讨论】:
标签: variables properties yaml jinja2 salt-stack