gpt4 book ai didi

python - 如何在 Ansible 2.7 或 2.8 中循环遍历多级 dict 或 yaml?

转载 作者:太空宇宙 更新时间:2023-11-03 21:14:25 26 4
gpt4 key购买 nike

我通过多级 yaml 找到了一些 ansible 循环示例,但是,我似乎无法再深入一层。

我有一个要在 xenserver 池上创建的机器或虚拟机的列表,我需要选择主机名、CPU 数量等。

#Requires ansible dev version 2.8.  2.8 will be release summer 2019.

- hosts: xenservers
vars:
Machines:
Connectors:
Connector1:
hostname: CCConn-0001
num_cpus: 4
num_cpu_cores_per_socket: 2
memory_mb: 8192
Connector2:
hostname: CCConn-0002
num_cpus: 4
num_cpu_cores_per_socket: 2
memory_mb: 8192
#Storefronts:
# Storefront1:
# hostname: SFPrinci-0001
# num_cpus: 4
# num_cpu_cores_per_socket: 2
# memory_mb: 8192

tasks:
# - name: Create VMs from a template
# xenserver_guest:
# hostname: 10.8.47.11
# username:
# password:
# validate_certs: no
# #folder: /home/testvms
# name: '{{Need a hostname here}}'
# state: poweredon
# template: W2K16_RTM_64_EN_ans
# disks:
# - size_gb: 100
# name: ''
# sr: XenRTVol
# linked_clone: yes
# hardware:
# num_cpus: 'Need number of cpus here'
# num_cpu_cores_per_socket: 'Need cores per socket here'
# memory_mb: 'Need memory here'
# cdrom:
# type: iso
# iso_name: guest-tools.iso
# networks:
# - name: vlan40
# wait_for_ip_address: no
# delegate_to: localhost
# register: deploy
# with_subelements: '{{Machines}}'

- name:
debug:
msg: "{{ item.key }} - {{ item.value }}"
loop: "{{ Machines | dict2items }}"

我一直在玩 dict2items,但是,我不知道如何获得我需要的低一级的值。如果这是有道理的。

最佳答案

您可以丢弃两个级别上的所有键名称并仅迭代值:

- debug:
msg: "{{ item }}"
loop: "{{ Machines | json_query('*.*[]') }}"

json_query 过滤器使用 JMESPath语法。

关于python - 如何在 Ansible 2.7 或 2.8 中循环遍历多级 dict 或 yaml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54829750/

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