Ansible template 变量不接受ansible jinja模板

Ansible template 变量不接受ansible jinja模板,ansible-template,Ansible Template,我已经创建了jinja2模板,用下面的代码生成我的json文件。 我的变量如下: network_profile: - Internal - Custom 若我使用了上述2个变量,那个么我并没有得到下面提到的输出。第二个循环的v_值变为自定义值。我希望它是内部的 而不是如果我使用3个变量,那么它工作良好,并根据我的要求得到低于输出。知道我错过了什么吗 { "p_data": [ { "u_label": &

我已经创建了jinja2模板,用下面的代码生成我的json文件。 我的变量如下:

network_profile:
- Internal
- Custom
若我使用了上述2个变量,那个么我并没有得到下面提到的输出。第二个循环的v_值变为自定义值。我希望它是内部的

而不是如果我使用3个变量,那么它工作良好,并根据我的要求得到低于输出。知道我错过了什么吗

{
    "p_data": [
        {
            "u_label": "Internal",
            "u_catalog_item": "abc",
            "u_value": "Internal"
        },
        {
            "u_label": "Custom",
            "u_catalog_item": "abc",
            "u_value": "Internal"
        }
    ]
}

您的
循环.长度
2
。循环第二次出现时,索引也将为
2
。所以发生的事情是你要求的

我猜你的意思是:

{
“p_数据”:[
{%用于网络配置文件%}
{%if loop.index==loop.length%}
{
“u_标签”:“{{network}}”,
“目录项”:“{{catalog\u item}”,
“u_值”:“内部”
{#^--将值交换为else}
}
{%else%}
{
“u_标签”:“{{network}}”,
“目录项”:“{{catalog\u item}”,
“u_值”:“{{network}”
{#^--将值交换为if}
},
{%endif%}
{%endfor%}
]
}

我要寻找的是,网络配置文件中的动态变量,如果我添加了新变量,那么我的数据应该在下面查看

{
    "p_data": [
        {
            "u_label": "Internal",
            "u_catalog_item": "abc",
            "u_value": "Internal"
        },
        {
            "u_label": "Custom",
            "u_catalog_item": "abc",
            "u_value": "Internal"
        },
        {
            "u_label": "Test",
            "u_catalog_item": "abc",
            "u_value": "Test"
        }
    ]
}
只有我有条件唯一的“自定义”变量。无论何时,u_值都应为“内部”


我要寻找的是,网络配置文件中的动态变量,如果我添加了新变量,那么我的数据应该如下所示。
{
    "p_data": [
        {
            "u_label": "Internal",
            "u_catalog_item": "abc",
            "u_value": "Internal"
        },
        {
            "u_label": "Custom",
            "u_catalog_item": "abc",
            "u_value": "Internal"
        },
        {
            "u_label": "Test",
            "u_catalog_item": "abc",
            "u_value": "Test"
        }
    ]
}
    "p_data": [
        {% for network in network_profile %}
            {% if loop.index == loop.length %}
            {
              "u_label": "{{ network }}",
              "u_catalog_item": "{{ catalog_item }}",
              {% if network|string() != 'Custom' %}
              "u_value": "{{ network }}"
              {% else %}
              "u_value": "Internal"
              {% endif %}
            }

          {% else %}
            {
              "u_label": "{{ network }}",
              "u_catalog_item": "{{ catalog_item }}",
              "u_value": "{{ network }}"
            },
          {% endif %}
          {% endfor %}
    ]
}