我正在使用自定义事实模块将JSON恢复到Ansible 2.9中
ok: [Host] => {
"msg": {
"changed": false,
"failed": false,
"msg": "Successfully completed the view storage volume operation",
"storage_status": {
"Message": {
"Controller": {
"AHCI.Embedded.3-1": {},
"RAID.Integrated.1-1": {
"Enclosure": {
"Enclosure.Internal.0-1:RAID.Integrated.1-1": {
"PhysicalDisk": [
"Disk.Bay.0:Enclosure.Internal.0-1:RAID.Integrated.1-1",
"Disk.Bay.1:Enclosure.Internal.0-1:RAID.Integrated.1-1"
]
}
},
"VirtualDisk": {
"Disk.Virtual.0:RAID.Integrated.1-1": {
"PhysicalDisk": [
"Disk.Bay.0:Enclosure.Internal.0-1:RAID.Integrated.1-1",
"Disk.Bay.1:Enclosure.Internal.0-1:RAID.Integrated.1-1"
]
}
}
}
}
},
"Status": "Success"
}
}
}我想使用set_fact模块将"Disk.Virtual.0:RAID.Integrated.1-1“值赋给一个变量。使用以下过滤器:
{{ disks['storage_status']['Message']['Controller']['RAID.Integrated.1-1']['VirtualDisk'] }}我只能选择以下内容:
ok : [Host] => {
"msg": {
"Disk.Virtual.0:RAID.Integrated.1-1": {
"PhysicalDisk": [
"Disk.Bay.0:Enclosure.Internal.0-1:RAID.Integrated.1-1",
"Disk.Bay.1:Enclosure.Internal.0-1:RAID.Integrated.1-1"
]
}
}
}但是我不知道如何获取Disk.Virtual.0:RAID.Integrated.1-1并将其赋值给变量。
任何帮助/指导都将不胜感激。
谢谢
发布于 2020-03-12 20:10:49
在.key中使用dict查找
- debug:
msg: "{{ lookup('dict', disks['storage_status']['Message']['Controller']['RAID.Integrated.1-1']['VirtualDisk']).key }}"提供:
TASK [debug] *****************************************
ok: [localhost] => {
"msg": "Disk.Virtual.0:RAID.Integrated.1-1"
}要为变量(my_var)赋值,请使用set_fact
- set_fact:
my_var: "{{ lookup('dict', disks['storage_status']['Message']['Controller']['RAID.Integrated.1-1']['VirtualDisk']).key }}"https://stackoverflow.com/questions/60653388
复制相似问题