使用ansible如何从存储在变量中的json输出获取数据中心值

问题描述 投票:0回答:1
changed: "false"
clusters: 
  ADC_CORE4: 
    hosts: 
    - name: "b125.abc.com"
      folder: "/ADC_3C/host/ADC_CORE4"
    enable_ha: "true"
    ha_failover_level: "2"
    resource_summary: 
      cpuCapacityMHz: "2183328"
      cpuUsedMHz: "71374"
    moid: "test"
    datacenter: "ADC_AI"

从这个 yaml 输出中,我需要获取变量中的数据中心值。但是 ADC_CORE4 值不稳定,当集群发生变化时,它会随着我获得的每个输出而变化。我喜欢从这个输出中获取数据中心值并尝试在虚拟机部署中使用它。

ansible vmware
1个回答
0
投票

假设您的示例 YAML 数据是变量

myvariable
的内容,您可以像这样获取
datacenter
值:

(myvariable.clusters.values()|list).0.datacenter

values()
方法返回值列表;由于只有一个值,我们只需获取列表中的第一项,然后请求
datacenter
属性。

例如:

- hosts: localhost
  gather_facts: false
  vars:
    myvariable:
      changed: "false"
      clusters: 
        ADC_CORE4: 
          hosts: 
          - name: "b125.abc.com"
            folder: "/ADC_3C/host/ADC_CORE4"
          enable_ha: "true"
          ha_failover_level: "2"
          resource_summary: 
            cpuCapacityMHz: "2183328"
            cpuUsedMHz: "71374"
          moid: "test"
          datacenter: "ADC_AI"

  tasks:
    - debug:
        msg: "datacenter: {{ (myvariable.clusters.values()|list).0.datacenter }}"
© www.soinside.com 2019 - 2024. All rights reserved.