【问题标题】:question about extracting variables from json关于从json中提取变量的问题
【发布时间】:2021-03-01 13:44:50
【问题描述】:

我有以下 json 输出:

我必须得到 "holders"("VG_ROOT-var", "VG_ROOT-root", "VG_ROOT-tmp") 来自所有 sd* 驱动器 *

尝试在 ansible 中使用类似的东西:

“gather_host_facts_result.ansible_facts.ansible_devices.sd*”

不幸的是,在这个阶段我已经遇到了问题。有人可以帮我吗?

如何在查询中指定“*”以转到结构的其余部分?

{
    "msg": [
        {
            "dm-0": {
                "holders": [],
                "host": "",
                "links": {
                    "ids": [
                        "dm-name-VG_ROOT-root",
                        "dm-uuid-LVM-YMwN1WVoYYOwj8ZRJ5ZBdpMSlPTiiOAOgCughz5IwAC91ILXxeQEkJU4NnhDgfGf"
                    ],
                    "labels": [],
                    "masters": [],
                    "uuids": [
                        "97c2a8ff-e21f-4869-9b0f-bbba523dc487"
                    ]
                },
                "model": null,
                "partitions": {},
                "removable": "0",
                "rotational": "1",
                "sas_address": null,
                "sas_device_handle": null,
                "scheduler_mode": "",
                "sectors": "123723776",
                "sectorsize": "512",
                "size": "59.00 GB",
                "support_discard": "0",
                "vendor": null,
                "virtual": 1
            },
            "dm-1": {
                "holders": [],
                "host": "",
                "links": {
                    "ids": [
                        "dm-name-VG_DATA-data",
                        "dm-uuid-LVM-htvEwSfXRtyxN1j7V4A2BSdeKJGBTLqiPBERZVCP8ZOr4uMWSmopoedAQvSZ4gXJ"
                    ],
                    "labels": [],
                    "masters": [],
                    "uuids": [
                        "4c4c89ab-df3f-4647-aa37-c04c9175b804"
                    ]
                },
                "model": null,
                "partitions": {},
                "removable": "0",
                "rotational": "1",
                "sas_address": null,
                "sas_device_handle": null,
                "scheduler_mode": "",
                "sectors": "62906368",
                "sectorsize": "512",
                "size": "30.00 GB",
                "support_discard": "0",
                "vendor": null,
                "virtual": 1
            },
            "dm-2": {
                "holders": [],
                "host": "",
                "links": {
                    "ids": [
                        "dm-name-VG_SWAP-swap",
                        "dm-uuid-LVM-SHCF191xu9CcjovlxavjqUXI1yBmVdLTxbd24kHS8fkcAlDkbMcXlAlsY7m0soMF"
                    ],
                    "labels": [],
                    "masters": [],
                    "uuids": [
                        "97999edf-ccb5-45c8-87c6-23d2a5771146"
                    ]
                },
                "model": null,
                "partitions": {},
                "removable": "0",
                "rotational": "1",
                "sas_address": null,
                "sas_device_handle": null,
                "scheduler_mode": "",
                "sectors": "20963328",
                "sectorsize": "512",
                "size": "10.00 GB",
                "support_discard": "0",
                "vendor": null,
                "virtual": 1
            },
            "dm-3": {
                "holders": [],
                "host": "",
                "links": {
                    "ids": [
                        "dm-name-VG_ROOT-tmp",
                        "dm-uuid-LVM-YMwN1WVoYYOwj8ZRJ5ZBdpMSlPTiiOAOqId09qrO6vwn9z7306ZkWhRyiXS4d1jy"
                    ],
                    "labels": [],
                    "masters": [],
                    "uuids": [
                        "325d6523-4e1f-4352-ab39-1e7259b613c5"
                    ]
                },
                "model": null,
                "partitions": {},
                "removable": "0",
                "rotational": "1",
                "sas_address": null,
                "sas_device_handle": null,
                "scheduler_mode": "",
                "sectors": "20971520",
                "sectorsize": "512",
                "size": "10.00 GB",
                "support_discard": "0",
                "vendor": null,
                "virtual": 1
            },
            "dm-4": {
                "holders": [],
                "host": "",
                "links": {
                    "ids": [
                        "dm-name-VG_ROOT-var",
                        "dm-uuid-LVM-YMwN1WVoYYOwj8ZRJ5ZBdpMSlPTiiOAOTz6mFIEVsHJN4B0hOAV0RlVdmm293Z0L"
                    ],
                    "labels": [],
                    "masters": [],
                    "uuids": [
                        "41f5cd6a-fa50-4ac3-a14d-693d23a3df87"
                    ]
                },
                "model": null,
                "partitions": {},
                "removable": "0",
                "rotational": "1",
                "sas_address": null,
                "sas_device_handle": null,
                "scheduler_mode": "",
                "sectors": "20971520",
                "sectorsize": "512",
                "size": "10.00 GB",
                "support_discard": "0",
                "vendor": null,
                "virtual": 1
            },
            "sda": {
                "holders": [],
                "host": "Serial Attached SCSI controller: VMware PVSCSI SCSI Controller (rev 02)",
                "links": {
                    "ids": [],
                    "labels": [],
                    "masters": [],
                    "uuids": []
                },
                "model": "Virtual disk",
                "partitions": {
                    "sda1": {
                        "holders": [],
                        "links": {
                            "ids": [],
                            "labels": [],
                            "masters": [],
                            "uuids": [
                                "3C14-A798"
                            ]
                        },
                        "sectors": "2097152",
                        "sectorsize": 512,
                        "size": "1.00 GB",
                        "start": "2048",
                        "uuid": "3C14-A798"
                    },
                    "sda2": {
                        "holders": [
                            "VG_ROOT-var",
                            "VG_ROOT-root",
                            "VG_ROOT-tmp"
                        ],
                        "links": {
                            "ids": [
                                "lvm-pv-uuid-9Mm0hj-z0vg-WEhd-7MyB-xcp1-mEI3-XZENN8"
                            ],
                            "labels": [],
                            "masters": [
                                "dm-0",
                                "dm-3",
                                "dm-4"
                            ],
                            "uuids": []
                        },
                        "sectors": "165672927",
                        "sectorsize": 512,
                        "size": "79.00 GB",
                        "start": "2099200",
                        "uuid": null
                    }
                },
                "removable": "0",
                "rotational": "1",
                "sas_address": null,
                "sas_device_handle": null,
                "scheduler_mode": "bfq",
                "sectors": "167772160",
                "sectorsize": "512",
                "size": "80.00 GB",
                "support_discard": "0",
                "vendor": "VMware",
                "virtual": 1
            },
            "sdb": {
                "holders": [
                    "VG_SWAP-swap"
                ],
                "host": "Serial Attached SCSI controller: VMware PVSCSI SCSI Controller (rev 02)",
                "links": {
                    "ids": [
                        "lvm-pv-uuid-m2YPQe-ofBp-AjUa-qAfQ-Bcy6-xTpj-WyNFU1"
                    ],
                    "labels": [],
                    "masters": [
                        "dm-2"
                    ],
                    "uuids": []
                },
                "model": "Virtual disk",
                "partitions": {},
                "removable": "0",
                "rotational": "1",
                "sas_address": null,
                "sas_device_handle": null,
                "scheduler_mode": "bfq",
                "sectors": "20971520",
                "sectorsize": "512",
                "size": "10.00 GB",
                "support_discard": "0",
                "vendor": "VMware",
                "virtual": 1
            },
            "sdc": {
                "holders": [
                    "VG_DATA-data"
                ],
                "host": "Serial Attached SCSI controller: VMware PVSCSI SCSI Controller (rev 02)",
                "links": {
                    "ids": [
                        "lvm-pv-uuid-X47VTO-03iG-WVw4-ww8p-PH0v-hlGj-wU1t7F"
                    ],
                    "labels": [],
                    "masters": [
                        "dm-1"
                    ],
                    "uuids": []
                },
                "model": "Virtual disk",
                "partitions": {},
                "removable": "0",
                "rotational": "1",
                "sas_address": null,
                "sas_device_handle": null,
                "scheduler_mode": "bfq",
                "sectors": "62914560",
                "sectorsize": "512",
                "size": "30.00 GB",
                "support_discard": "0",
                "vendor": "VMware",
                "virtual": 1
            },
            "sr0": {
                "holders": [],
                "host": "IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)",
                "links": {
                    "ids": [
                        "ata-VMware_Virtual_IDE_CDROM_Drive_10000000000000000001"
                    ],
                    "labels": [],
                    "masters": [],
                    "uuids": []
                },
                "model": "VMware IDE CDR10",
                "partitions": {},
                "removable": "1",
                "rotational": "1",
                "sas_address": null,
                "sas_device_handle": null,
                "scheduler_mode": "bfq",
                "sectors": "2097151",
                "sectorsize": "512",
                "size": "1024.00 MB",
                "support_discard": "0",
                "vendor": "NECVMWar",
                "virtual": 1
            }
        }
    ]
}

【问题讨论】:

  • 我不能 100% 确定您的要求,但基本上:"{{ ansible_facts.devices | dict2items | selectattr('key', 'contains', 'sd') | map(attribute='value.holders') | flatten }}"
  • @Zeitounator small nit: selectattr('key', 'match', '^sd.*') 因为contains 将匹配nonsd

标签: json ansible json-query


【解决方案1】:

我创造了这样的东西:

- name: disks
  hosts: localhost
  become: false
  gather_facts: false
  tasks:
  - name: hardware
    setup:
      gather_subset:
      - hardware
    register: gather_host_facts_result


  - name: The output 
    debug:
      msg:
        - "{{ gather_host_facts_result.devices | dict2items | selectattr('key', 'match', '^sd.*') | map(attribute='value.holders') | flatten }}"

但这不起作用。

我想从所有 sd * 磁盘中提取所有持有者 f.e VG ROOT-var, VG _ROOT-rootVG _ROOT-tmp。 输出应如下所示: sda2: "VG_ROOT-var", "VG_ROOT-root", "VG_ROOT-tmp"

sdc “VG_DATA 数据” 数据库 "VG_SWAP-交换"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多