Я пытаюсь использовать jq для обработки JSON из модуля инвентаризации VMware Ansible, чтобы я мог создать список объектов (ВМ), для которых не определен ansible_host.
Ближе всего я былможно получить:
{
"config.cpuHotAddEnabled": true,
"config.cpuHotRemoveEnabled": false,
"config.hardware.numCPU": 1,
"config.instanceUuid": "500e4e98-50ec-a3a7-9d45-b0ac36c2d192",
"config.name": "tu-openldap-01",
"config.template": false,
"guest.guestId": "rhel6_64Guest",
"guest.guestState": "notRunning",
"guest.hostName": "tu-openldap-01",
"guest.ipAddress": null,
"name": "tu-openldap-01",
"runtime.maxMemoryUsage": 2048
}
{
"config.cpuHotAddEnabled": true,
"config.cpuHotRemoveEnabled": false,
"config.hardware.numCPU": 1,
"config.instanceUuid": "500efaa5-baac-163b-65c0-7ed2a19f1d7d",
"config.name": "tu1vcm7tst2001",
"config.template": false,
"guest.guestId": "rhel7_64Guest",
"guest.guestState": "running",
"guest.hostName": "rhel7-template",
"guest.ipAddress": null,
"name": "tu1vcm7tst2001",
"runtime.maxMemoryUsage": 4096
}
с использованием следующего:
jq '._meta.hostvars[] | select(.ansible_host | not)' prod-inventory_201905070920.json
Это почти то, где я хочу, но проблема в том, как мне напечатать эти плюс ключ для объектасам?
Если я это сделаю:
jq '._meta.hostvars | select(.ansible_host | not)' prod-inventory_201905070920.json
Я получу это:
"tw1pttest1001_420e92f4-453e-1267-4331-d6253d771882": {
"ansible_host": "<omitted>",
"config.cpuHotAddEnabled": true,
"config.cpuHotRemoveEnabled": false,
"config.hardware.numCPU": 2,
"config.instanceUuid": "500ef630-16c1-cb91-be9c-e9e667b551d9",
"config.name": "tw1pttest1001",
"config.template": false,
"guest.guestId": "windows9Server64Guest",
"guest.guestState": "running",
"guest.hostName": "<omitted>",
"guest.ipAddress": "<omitted>",
"name": "tw1pttest1001",
"runtime.maxMemoryUsage": 49152
},
"tw1swsrm1001_420e18d2-0c96-0df5-e6c7-1ff8fc070cdb": {
"ansible_host": "<omitted>",
"config.cpuHotAddEnabled": true,
"config.cpuHotRemoveEnabled": false,
"config.hardware.numCPU": 4,
"config.instanceUuid": "500e231d-1eda-4e66-3f4a-8c68392a70b5",
"config.name": "tw1swsrm1001",
"config.template": false,
"guest.guestId": "windows9Server64Guest",
"guest.guestState": "running",
"guest.hostName": "<omitted>",
"guest.ipAddress": "<omitted>",
"name": "tw1swsrm1001",
"runtime.maxMemoryUsage": 16384
},
Есть предложения?Я чувствую, что это что-то простое, что я скучаю.