如何解决渲染 SLS 'base:test.test1' 失败:Jinja 变量 'list object' 没有属性 'sub1'
我的 SLS 文件如下,尝试访问变量 tst1 时出现错误,详细信息如下
{% load_yaml as test %}
value:
val1: 'string1'
val2: 'string2'
value1: ['sub1','sub2']
{% endload %}
{%- for tst in test.value1 -%}
{% set tst1 = test.value1[tst] %}
{{ tst1 }}
{%- endfor -%}
当尝试访问变量 tst1 时,出现如下错误。
rendering SLS 'base:test.test1' failed: Jinja variable 'list object' has no attribute 'sub1'
任何人都可以帮助指出错误指向什么吗?
解决方法
{% set tst1 = test.value1[tst] %}
在这一行中,您试图访问一个字典。 test.value1
是一个列表,而不是一个字典。
我认为这正是您想要的:
代码
{%- for tst in test.value1 -%}
{{ tst }}
{%- endfor -%}
输出
sub1sub2
,
实际上,SLS 文件应该包含要与模块一起执行的 ID(任务)。喜欢:
do-something:
module.name:
- args
...
仅仅放置像 {{ tst }}
这样的东西是行不通的,因为它期望像 do-something:
那样的映射
因此在 for
循环中,您应该“调用”某个模块。我使用 test.echo
显示以下示例中的值:
{% for tst in test.value1 %}
show-value1-{{ tst }}:
module.run:
- name: test.echo
- text: '{{ tst }}'
{% endfor %}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。