问题描述
我必须得到“持有人”(“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": [],"links": {
"ids": [
"dm-name-VG_DATA-data","dm-uuid-LVM-htvEwSfXRtyxN1j7V4A2BSdeKJGBTLqiPBERZVCP8ZOr4uMWSmopoedAQvSZ4gXJ"
],"uuids": [
"4c4c89ab-df3f-4647-aa37-c04c9175b804"
]
},"sectors": "62906368","size": "30.00 GB","dm-2": {
"holders": [],"links": {
"ids": [
"dm-name-VG_SWAP-swap","dm-uuid-LVM-SHCF191xu9CcjovlxavjqUXI1yBmVdLTxbd24kHS8fkcAlDkbMcXlAlsY7m0soMF"
],"uuids": [
"97999edf-ccb5-45c8-87c6-23d2a5771146"
]
},"sectors": "20963328","size": "10.00 GB","dm-3": {
"holders": [],"links": {
"ids": [
"dm-name-VG_ROOT-tmp","dm-uuid-LVM-YMwN1WVoYYOwj8ZRJ5ZBdpMSlPTiiOAOqId09qrO6vwn9z7306ZkWhRyiXS4d1jy"
],"uuids": [
"325d6523-4e1f-4352-ab39-1e7259b613c5"
]
},"sectors": "20971520","dm-4": {
"holders": [],"links": {
"ids": [
"dm-name-VG_ROOT-var","dm-uuid-LVM-YMwN1WVoYYOwj8ZRJ5ZBdpMSlPTiiOAOTz6mFIEVsHJN4B0hOAV0RlVdmm293Z0L"
],"uuids": [
"41f5cd6a-fa50-4ac3-a14d-693d23a3df87"
]
},"sda": {
"holders": [],"host": "Serial Attached SCSI controller: VMware PVSCSI SCSI Controller (rev 02)","links": {
"ids": [],"uuids": []
},"model": "Virtual disk","partitions": {
"sda1": {
"holders": [],"links": {
"ids": [],"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"
],"masters": [
"dm-0","dm-3","dm-4"
],"uuids": []
},"sectors": "165672927","size": "79.00 GB","start": "2099200","uuid": null
}
},"scheduler_mode": "bfq","sectors": "167772160","size": "80.00 GB","vendor": "VMware","sdb": {
"holders": [
"VG_SWAP-swap"
],"links": {
"ids": [
"lvm-pv-uuid-m2YPQe-ofBp-AjUa-qAfQ-Bcy6-xTpj-WyNFU1"
],"masters": [
"dm-2"
],"sdc": {
"holders": [
"VG_DATA-data"
],"links": {
"ids": [
"lvm-pv-uuid-X47VTO-03iG-WVw4-ww8p-PH0v-hlGj-wU1t7F"
],"masters": [
"dm-1"
],"sectors": "62914560","sr0": {
"holders": [],"host": "IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)","links": {
"ids": [
"ata-VMware_Virtual_IDE_CDROM_Drive_10000000000000000001"
],"model": "VMware IDE CDR10","removable": "1","sectors": "2097151","size": "1024.00 MB","vendor": "NECVMWar","virtual": 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 * 磁盘中提取所有持有者,例如 VG ROOT-var、VG _ROOT-rootVG _ROOT-tmp。 输出应如下所示: sda2: "VG_ROOT-var","VG_ROOT-root","VG_ROOT-tmp"
sdc “VG_DATA-数据” 数据表 “VG_SWAP-交换”