【发布时间】:2021-09-27 08:05:40
【问题描述】:
我有以下 jinja2 模板
[
{% for items in hosts %}
{
"name":"{{ items.name }}",
"display_name":"{{ items.display_name }}",
"services": {{ host_group | from_json | json_query('[*].services[0]') | to_json }},
}
{% endfor %}
]
我需要将 services[0] 替换为变量 {{ loop.index0 }},我尝试了这种语法
"services": {{ host_group | from_json | json_query('[*].services[loop.index0]') | to_json }}
但我遇到了一个错误:
AnsibleFilterError: JMESPathError in json_query filter plugin:
Expecting: star, got: unquoted_identifier: Parse error at column 13, token "loop" (UNQUOTED_IDENTIFIER), for expression:
"[*].services[loop.index0]"
我尝试了另一种语法:
"services": {{ host_group | from_json | json_query('[*].services[' + {{ loop.index0 }} +']') | to_json }},
它也给出了一个错误:
AnsibleError: template error while templating string: expected token ':', got '}'. String: [
【问题讨论】:
标签: ansible jinja2 ansible-template json-query