[英]Ansible & Jinja2: Convert two lists into key, value dict
我想将两个列表组合成Ansible中的键,值字典。
我有以下列表(AWS资源ID):
ok: [localhost] => {
"vpc_natgw_ids": [
[
"vpc-123",
"vpc-234",
"vpc-345",
"vpc-456"
],
[
"nat-098",
"nat-987",
"nat-876",
"nat-765"
]
]
}
第一个列表中的第一个项目对应于第二个列表中的第一个项目,第二个项目对应于另一个第二个项目,依此类推。
我想结合两个列表来得到一个像这样的字典:
ok: [localhost] => {
"vpc_natgw_ids_dict": [
"vpc-123": "nat-098",
"vpc-234": "nat-987",
"vpc-345": "nat-876",
"vpc-456": "nat-765"
]
}
我将如何实现这样的目标?
例如,这种方式:
set_fact:
vpc_natgw_ids_dict: "{{ dict(vpc_natgw_ids[0] | zip(vpc_natgw_ids[1])) }}"
IRC用户seschwar在freenode.net上的#ansible中发布的另一个解决方案也可以通过使用Jinja2来工作:
- set_fact:
vpc_natgw_ids_dict: >-
{%- set ns = namespace(ids={}) -%}
{%- for i in vpc_natgw_ids[0] -%}
{{- ns.ids.__setitem__(vpc_natgw_ids[0][loop.index0], vpc_natgw_ids[1][loop.index0]) -}}
{%- endfor -%}
{{- ns.ids -}}
- debug:
var: vpc_natgw_ids_dict
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.