Ansible&;Jinja2:将两个列表转换为键、值dict
我想在Ansible中将两个列表合并成一个键、值字典 我有以下列表(AWS资源ID): 第一个列表中的第一项对应于第二个列表中的第一项,第二项对应于另一个第二项,依此类推 我想将这两个列表结合起来,得到这样一个dict:Ansible&;Jinja2:将两个列表转换为键、值dict,ansible,jinja2,Ansible,Jinja2,我想在Ansible中将两个列表合并成一个键、值字典 我有以下列表(AWS资源ID): 第一个列表中的第一项对应于第二个列表中的第一项,第二项对应于另一个第二项,依此类推 我想将这两个列表结合起来,得到这样一个dict: ok: [localhost] => { "vpc_natgw_ids_dict": [ "vpc-123": "nat-098", "vpc-234": "nat-987", "vpc-345": "nat-876
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在#ansible发布的另一个解决方案在freenode.net上也使用了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
谢谢你,techraf!
- 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