Ansible версия: ansible 2.6.2 python версия 2.7.5
У меня есть отладочная информация из доступной книги, которая дает следующее:
"msg": {
"changed": false,
"failed": false,
"guest_disk_facts": {
"0": {
"backing_datastore": "datastore1",
"backing_disk_mode": "persistent",
"backing_eagerlyscrub": false,
"backing_filename": "[datastore1] test-1.vmdk",
"backing_thinprovisioned": false,
"backing_uuid": "6000C290-3e84-38aa-4e56-fbaba882190c",
"backing_writethrough": false,
"capacity_in_bytes": 53687091200,
"capacity_in_kb": 52428800,
"controller_key": 1000,
"key": 2000,
"label": "Hard disk 1",
"summary": "52,428,800 KB",
"unit_number": 0
},
"1": {
"backing_datastore": "datastore2",
"backing_disk_mode": "persistent",
"backing_eagerlyscrub": true,
"backing_filename": "[datastore2] test-1.vmdk",
"backing_thinprovisioned": false,
"backing_uuid": "6000C297-5d68-8010-7b09-75cf83e30801",
"backing_writethrough": false,
"capacity_in_bytes": 10737418240,
"capacity_in_kb": 10485760,
"controller_key": 1000,
"key": 2001,
"label": "Hard disk 2",
"summary": "10,485,760 KB",
"unit_number": 1
},
"2": {
"backing_datastore": "datastore5",
"backing_disk_mode": "persistent",
"backing_eagerlyscrub": false,
"backing_filename": "[datastore5] test-1.vmdk",
"backing_thinprovisioned": false,
"backing_uuid": "6000C292-1f84-3549-c198-d660e6955eda",
"backing_writethrough": false,
"capacity_in_bytes": 150323855360,
"capacity_in_kb": 146800640,
"controller_key": 1000,
"key": 2002,
"label": "Hard disk 3",
"summary": "146,800,640 KB",
"unit_number": 2
}
}
}
}
Ниже приведены примеры задач в playbook:
- name: Debug disk facts
debug: msg={{ output }}
Как я могу перебирать массивы, чтобы печатать только "backing_datastore" информацию, так мне удается зарегистрировать ее в переменной или стандартном выводе?
Я пытался это сделать, но у меня ничего не вышло. но мне нужны значения из всех массивов
debug: msg={{ output.guest_disk_facts.0 }}
fatal: [localhost]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: dict object has no element 0\n\nThe error appears to have been in ...
Это то, что вы ищете?
- debug:
var: item
loop: "{{ output.guest_disk_facts.values()|json_query('[].backing_datastore') }}"
или
- debug:
var: item
loop: "{{ output.guest_disk_facts|dict2items|json_query('[].value.backing_datastore') }}"
дает (grep item \ ":)
"item": "datastore2"
"item": "datastore1"
"item": "datastore5"