从存储在变量中的 JSON 输出中的字典中获取值

问题描述 投票:0回答:1
{
  "changed": false,
  "clusters": {
    "ADC_CORE4": {
      "enable_ha": true,
      "ha_failover_level": 2,
      "ha_vm_monitoring": "vmMonitoringDisabled",
      "datacenter": "ADC_AI"
    }
  }
}

这是输出,ADC_CORE4 这是不断变化的簇值。如何使用 ansible 中的 set_facts 获取变量中的数据中心值。

#i 将输出存储为 cluster_info。并尝试使用以下方法获取数据中心值:

- name: get the datacenter value
    msg: "datacenter : {{ cluster_info.clusters.ADC_CORE4.datacenter }}"

但是 ADC_CORE4 不是恒定值,它会不断变化。所以我不能在部署虚拟机的自动化中使用它。因此需要有关如何获取变量中的数据中心值的帮助。

ansible vmware
1个回答
0
投票

给出字典:

    cluster_info:
      changed: false
      clusters:
        ADC_CORE4:
          datacenter: ADC_AI
          enable_ha: true
          ha_failover_level: 2
          ha_vm_monitoring: vmMonitoringDisabled

问:“使用 set_fact 获取变量中的数据中心值。”

A:使用过滤器json_query

    - set_fact:
        datacenter: "{{ cluster_info.clusters |
                        json_query('*.datacenter') }}"

给出一个列表,因为可能有更多的簇

  datacenter:
  - ADC_AI

在这种特殊情况下,请选择第一项

    - set_fact:
        datacenter: "{{ cluster_info.clusters |
                        json_query('*.datacenter') |
                        first }}"

给予

  datacenter: ADC_AI
© www.soinside.com 2019 - 2024. All rights reserved.