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

我通过多级 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,但是,我不知道如何获得我需要低一级的值。如果这是有道理的。


吃鸡游戏
浏览 204回答 2
2回答

莫回无

您可以丢弃两个级别上的所有键名并仅迭代值:- debug:     msg: "{{ item }}"   loop: "{{ Machines | json_query('*.*[]') }}"json_query过滤器使用JMESPath语法。

慕丝7291255

Python 嵌套字典查找可以按如下方式完成:# Create test dictionarytest_dict = {'level_one': {'level_two': 'test'}}# Print the nested valueprint(test_dict['level_one']['level_two'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python