首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ansible:将JSON值赋给变量

Ansible:将JSON值赋给变量
EN

Stack Overflow用户
提问于 2020-03-12 19:39:07
回答 1查看 171关注 0票数 0

我正在使用自定义事实模块将JSON恢复到Ansible 2.9中

代码语言:javascript
运行
复制
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“值赋给一个变量。使用以下过滤器:

代码语言:javascript
运行
复制
{{ disks['storage_status']['Message']['Controller']['RAID.Integrated.1-1']['VirtualDisk'] }}

我只能选择以下内容:

代码语言:javascript
运行
复制
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并将其赋值给变量。

任何帮助/指导都将不胜感激。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-03-12 20:10:49

.key中使用dict查找

代码语言:javascript
运行
复制
  - debug:
      msg: "{{ lookup('dict', disks['storage_status']['Message']['Controller']['RAID.Integrated.1-1']['VirtualDisk']).key }}"

提供:

代码语言:javascript
运行
复制
TASK [debug] *****************************************
ok: [localhost] => {
    "msg": "Disk.Virtual.0:RAID.Integrated.1-1"
}

要为变量(my_var)赋值,请使用set_fact

代码语言:javascript
运行
复制
  - set_fact:
      my_var: "{{ lookup('dict', disks['storage_status']['Message']['Controller']['RAID.Integrated.1-1']['VirtualDisk']).key }}"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60653388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档