我想在for循环中设置默认变量,并在sub-for循环中重用它们。
我的状态:
{% for jboss_application in grains["JBOSS_APP"] %}
{% if 'app_foobar' in jboss_application %}
{% import_yaml 'foobar_properties.yml' as jboss_apps %}
{% endif %}
{% set jboss_app_name = jboss_apps['jboss_defaults']['jboss_app_name'] %} # DEFAULT VARIABLE
{% for jboss_container, jboss_container_values in jboss_apps.iteritems() %}
{% for key, value in jboss_container_values.items() %}
{% if value.get('jboss_container_install') == 'True' %} # ERROR
# Do stuff - {{ jboss_app_name.index }}
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
foobar_properties.yml文件:
jboss_defaults:
jboss_app_name: 'app_foobar'
jboss_container:
jboss_container_values:
jboss_container_install: 'True'
jboss_foobar_variable: 'foobar'
...
我在第一个循环中使用'set'指令得到了这个错误: 错误:失败:Jinja变量'str object'没有属性'get '
如果我评论或删除'set'指令我的状态(和测试)完美无缺。
仅供参考:http://jinja.pocoo.org/docs/2.9/tricks/#accessing-the-parent-loop
如果'jboss_container_install'为'True'并且没有成功,我已经尝试了很多其他测试方法。