AnsibleUndefinedVariable:未找到具有以下名称的变量:region1a“}

AnsibleUndefinedVariable:未找到具有以下名称的变量:region1a“},ansible,jinja2,ansible-template,Ansible,Jinja2,Ansible Template,我想在比较该地区是否为首都后得到信息输出? 帮助我了解如何正确使用查找 {% if capital == lookup('vars', item) %} yes {% else %} no {% endif %} 或 我得到以下错误 failed: [localhost] (item=region1a) => {"ansible_loop_var": "item", "changed": false, "item&qu

我想在比较该地区是否为首都后得到信息输出? 帮助我了解如何正确使用查找

{% if capital == lookup('vars', item) %} yes {% else %} no {% endif %}

我得到以下错误

failed: [localhost] (item=region1a) => {"ansible_loop_var": "item", "changed": false, "item": "region1a", "msg": AnsibleError: template error while templating string: expected token ':', got '}'
这里{{item}}是一个变量=region1a

我有这些变量

vars:
        AllCountry:
          - name1
          - name2
        name1:
          - region1a
          - region1b 
        name2:
          - region2a
          - region2b
        capital:
          - region1a
          - region2a

我错在哪里?

在我看来,这就是你想要实现的目标:

{% if item in capital %} yes {% else %} no {% endif %}
.假设你在两个国家有两个名称相同的地区,一个是其中一个国家的首都,而另一个不是另一个国家的首都,你会怎么做

我真的会选择一种更为紧凑的字典,比如:

国家: 国家1: 区域: -区域1 -区域2 -区域3 首都:区域1 国家2: 区域: -区域4 -区域5 首都:区域5
但是如果没有您的实际用例以及您正试图用所有这些构建的内容,就很难就要构建的数据结构的正确类型提出建议。

我使用建议的结构并得到以下错误:AnsibleUndefinedVariable:“masterN”未定义。如果您重新构建数据结构,这将是一个完全不同的问题,当然,它可以作为一个单独的问题,并与此联系起来。
{% if item in capital %} yes {% else %} no {% endif %}