gpt4 book ai didi

python - YAML 文件的 Jinja 语法

转载 作者:行者123 更新时间:2023-11-28 22:23:38 25 4
gpt4 key购买 nike

我已经阅读了很多关于 python 和 JINJA 中的循环的文章,但我没有找到解决我的问题的正确答案。我真的是编程新手,所以我一定遗漏了一些东西

我有以下YAML 文件

CONT_PLANE_PROT_V4:
- RANGES:
- 10.193.130.240/28
- 10.193.135.240/28
- HOSTS:
- 10.193.131.131
- 10.196.180.5

我想用这些变量生成一个模板,如果我在 Ansible 中打印变量,它会显示如下:

打印变量

[{u'RANGES': [u'10.193.130.240/28', u'10.193.135.240/28']}, {u'HOSTS': [u'10.193.131.131', u'10.196.180.5']}]

我在 JINJA 模板中尝试以下操作但没有成功:

神社模板

{% for list in CONT_PLANE_PROT_V4 %}
{% for ips in CONT_PLANE_PROT_V4[list] %}

Statement1 {{RANGES_IPs}

{% endfor %}
{% endfor %}

{% for list in CONT_PLANE_PROT_V4 %}
{% for ips in CONT_PLANE_PROT_V4[list] %}

Statement2 {{HOSTS_IPs}}

{% endfor %}
{% endfor %}

Ansible 错误: “AnsibleUndefinedVariable:列表对象没有元素 {u'RANGES':[u'10.193.130.240/28',u'10.193.135.240/28',u '10.183.64.240/28', u'10.183.60.240/28', u'10.183.106.240/28', u'10.36.12.240/28', u'10.128.64.240/28', u'10.44.12.240/28', u'10.213.12.240/28', u'10.111.64.240/28', u'10.193.80.240/28']}"}

请求:您能否让我知道正确获取 2 个列表(4 个 IP)值的最佳方法或最简单方法。我将需要访问“RANGES”和“HOST”列表中的值。 “RANGES”列表中的值将用于语句 1,“HOSTS”列表中的值将用于语句 2。

像这样:

预期结果

statement1 10.193.130.240/28
statement1 10.193.135.240/28

statement2 10.193.131.131
statement2 10.196.180.5

最佳答案

如果您可以重构 YAML 数据,请像这样更改它:

CONT_PLANE_PROT_V4:
RANGES:
- 10.193.130.240/28
- 10.193.135.240/28
HOSTS:
- 10.193.131.131
- 10.196.180.5

这样 CONT_PLANE_PROT_V4 是一个字典,有两个键 RANGESHOSTS,它们是字符串列表。

然后你可以这样做:

{% for r in CONT_PLANE_PROT_V4['RANGES'] %}
Statement1 {{ r }}
{% endfor %}

{% for h in CONT_PLANE_PROT_V4['HOSTS'] %}
Statement2 {{ h }}
{% endfor %}

使用您的原始数据,您有一个列表 CONT_PLANE_PROT_V4,其中包含字典作为元素,每个字典内部都有不同的键。您必须编写稍微复杂一点的模板来处理此结构。

关于python - YAML 文件的 Jinja 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46915278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com