ansible - 如何制作字典元素顶级变量

标签 ansible

我正在尝试将动态简单字典元素转换为变量。

例如来自以下词典:

vm:
  cpu: 4
  name: test
  ip: 10.10.10.10

我需要生成以下变量:

cpu
name
ip

当然,哪些值包含字典中的值。

知道字典键(这里是cpunameip)是变量并且是未知的。

最佳答案

set_fact中任务,您可以模板化键和值,因此,将其与 dict2items 结合起来,循环字典 vm 的所有键,您就得到了所需的行为。

给定:

- set_fact:
    "{{ item.key }}": "{{ item.value }}"
  loop: "{{ vm | dict2items }}"

这会将三个顶级变量 cpunameip 设置为其各自的值。


鉴于两项任务:

- 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/

相关文章:

python - 通过 dict 变量到 stat 模块的路径

ubuntu - 如何修复 apt-get dist-upgrade 上的错误 400

ansible - ansible回调是如何配置的

ansible - inventory_hostname 和 ansible_hostname 有什么区别

ansible - ansible复制文件的问题

ansible - 如何从环境变量安装多个 ssh 公钥?

linux - 使用 Ansible 迭代从 Docker API 返回的 json

ruby - Gem 在安装 jekyll 时无法构建 native 扩展

ansible - 通过 ansible 安装 deb 包

ansible - 使用 Ansible 在远程系统上移动文件,仅当目标不存在时