json - Ansible:将 JSON 值分配给变量
问题描述
我正在使用自定义事实模块在 Ansible 2.9 中获取 JSON
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"
}
}
}
我想Disk.Virtual.0:RAID.Integrated.1-1
使用 set_fact 模块将“”值分配给变量。使用以下过滤器:
{{ 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
并将其分配给变量。
任何帮助/指导将不胜感激。
谢谢
解决方案
使用dict
查找.key
:
- 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 }}"
推荐阅读
- reactjs - React:嵌套组件之间的通信
- reactjs - 为什么分页不起作用?以及如何解决?
- java - 是否可以在不重新启动应用程序的情况下重新加载 WebSphere Application Server (WAS) 中的共享库?
- docker-compose - docker-compose up 返回 OSError: Can not read file in context: .../data/mmaps/5332641.mmtile
- javascript - Array.map() 运行两次
- html - 我可以将表单集输入的高度与按钮匹配吗?
- java - Dyanmo 中的 AWS 导致 ConditionalCheckFailedException 的原因?
- elasticsearch - {"type":"mapper_parsing_exception","reason":"解析字段失败 [user_agent.version]
- sql - 无法计算中位数 - SQL Server 2017
- javascript - 当我使用 React Hooks 将一个布尔值从一个子组件传递给它的父组件时,出了什么问题?