首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤ansible JSON输出

过滤ansible JSON输出
EN

Stack Overflow用户
提问于 2021-01-19 00:59:36
回答 1查看 39关注 0票数 0

我正在尝试从这个JSON输出中提取特定的键/值

代码语言:javascript
复制
{
    "result": {
        "results": [
            {
                "changed": false,
                "datacenter_info": [
                    {
                        "name": "DC_1",
                        "moid": "datacenter-2",
                        "config_status": "gray",
                        "overall_status": "gray"
                    }
                ],
                "invocation": {
                    "module_args": {
                        "hostname": "vcenter_hostname_1",
                        "username": "XXXXX",
                        "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
                        "validate_certs": false
                    }
                },
                "ansible_facts": {
                    "discovered_interpreter_python": "/usr/libexec/platform-python"
                },
                "failed": false,
                "item": "vcenter_hostname_1",
                "ansible_loop_var": "item"
            },
            {
                "changed": false,
                "datacenter_info": [
                    {
                        "name": "DC_2_A",
                        "moid": "datacenter-2",
                        "config_status": "gray",
                        "overall_status": "gray"
                    },
                    {
                        "name": "DC_2_B",
                        "moid": "datacenter-3",
                        "config_status": "gray",
                        "overall_status": "gray"
                    },
                    {
                        "name": "DC_2_C",
                        "moid": "datacenter-3",
                        "config_status": "gray",
                        "overall_status": "gray"
                    }
                ],
                "invocation": {
                    "module_args": {
                        "hostname": "vcenter_hostname_2",
                        "username": "XXXXX",
                        "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
                        "validate_certs": false
                    }
                },
                "failed": false,
                "item": "vcenter_hostname_2",
                "ansible_loop_var": "item"
            }
        ],
        "msg": "All items completed",
        "changed": false
    },
    "_ansible_verbose_always": true,
    "_ansible_no_log": false,
    "changed": false
}

预期输出为:

代码语言:javascript
复制
{
    [
        {
            "datacenter_info": [
                {
                    "name": "DC_1",
                    "moid": "datacenter-1",
                    "config_status": "gray",
                    "overall_status": "gray"
                }
            "vcenter": "vcenter_hostname_1",
        },
        {
            "datacenter_info": [
                {
                    "name": "DC_2_A",
                    "moid": "datacenter-2",
                    "config_status": "gray",
                    "overall_status": "gray"
                },
                {
                    "name": "DC_2_B",
                    "moid": "datacenter-3",
                    "config_status": "gray",
                    "overall_status": "gray"
                },
                {
                    "name": "DC_2_C",
                    "moid": "datacenter-4",
                    "config_status": "gray",
                    "overall_status": "gray"
                }
            ],
            "vcenter": "vcenter_hostname_2"
        }
    ]
}

我试过了:

代码语言:javascript
复制
- name: Append string to list
  set_fact:
    formatted: "{{ formatted + [ item.item ] + [ item.datacenter_info ] }}"

它非常接近,但我无法插入密钥vcenter,并且我丢失了密钥datacenter_info

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-19 12:08:14

我不知道formatted包含了什么,但我相信你要找的是:

代码语言:javascript
复制
- name: Append string to list
  set_fact:
    formatted: '{{ formatted + [{"vcenter": item.item, "datacenter_info": item.datacenter_info}] }}'
  with_items: '{{ result.results }}'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65778893

复制
相关文章

相似问题

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