比较模板中的变量以构建JSON - Ansible

时间:2015-12-22 07:42:57

标签: jinja2 ansible ansible-playbook ansible-template

从Ansible开始,我正在尝试使用ReST API与外部应用程序进行交互。也许我在这里缺少一些简单的东西。

我试图将库存文件中的每个主机与调用jinja2模板的角色使用的变量文件中指定的POD名称进行比较。

我的库存文件如下所示:

    [all]
    'POD-9'
    'POD-10' 

变量文件:

    pods:
        params:
        - name: POD-9
        - name: POD-10


    {% for pod in pods.params %}
    {% if '{{ inventory_hostname }}' == '{{ pod.name }}' %} 
    <generate JSON template here>
    {% endif %}
    {% endfor %}

if语句不会生效。我希望仅在inventory_hostname中生成模板等于变量文件中的pod名称

当前的JSON文件包括: {     “pod”:{         “名字”:“POD-9”     }     “pod”:{
        “名字”:“POD-10”     } }

2 个答案:

答案 0 :(得分:2)

在Jinja2中,双花括号用作打印语句。如果您访问标签内的变量,请不要在它们周围放置大括号

{% for pod in pods.params %}
    {% if inventory_hostname == pod.name %} 
        <generate JSON template here>
    {% endif %}
{% endfor %}

答案 1 :(得分:0)

发现问题: {%if pod.name == inventory_hostname%}