我正在尝试将动态简单字典元素转换为变量。
例如来自以下词典:
vm:
cpu: 4
name: test
ip: 10.10.10.10
我需要生成以下变量:
cpu
name
ip
当然,哪些值包含字典中的值。
知道字典键(这里是cpu
、name
和ip
)是变量并且是未知的。
最佳答案
在set_fact
中任务,您可以模板化键和值,因此,将其与 dict2items
结合起来,循环字典 vm
的所有键,您就得到了所需的行为。
给定:
- set_fact:
"{{ item.key }}": "{{ item.value }}"
loop: "{{ vm | dict2items }}"
这会将三个顶级变量 cpu
、name
和 ip
设置为其各自的值。
鉴于两项任务:
- set_fact:
"{{ item.key }}": "{{ item.value }}"
loop: "{{ vm | dict2items }}"
vars:
vm:
cpu: 4
name: test
ip: 10.10.10.10
- debug:
msg: |-
cpu: {{ cpu }}
name: {{ name }}
ip: {{ ip }}
这会产生:
ok: [localhost] =>
msg: |-
cpu: 4
name: test
ip: 10.10.10.10
关于ansible - 如何制作字典元素顶级变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74361339/