失败:Jinja变量'str object'没有属性'get' - For loop - Saltstack

时间:2017-08-04 07:23:48

标签: python for-loop yaml jinja2 salt-stack

我想在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'并且没有成功,我已经尝试了很多其他测试方法。

0 个答案:

没有答案