Ansible группа по атрибуту json - PullRequest
1 голос
/ 08 мая 2019

У меня есть данные JSON ниже.

{
    "images": [
        {
            "id": "79334504-3e48-4411-b602-afe920e32e14",
            "name": "rhel-7-factory-os-ready",
            "updated": "2019-05-07T15:51:00Z"
        },
        {
            "id": "05569058-0b47-4c05-8ce7-f09b2e32076a",
            "name": "sles-12-factory-os-ready",
            "updated": "2019-05-07T15:48:59Z"
        },
        {
            "id": "77c131bc-4dd6-4290-9dfb-89ddebc609f4",
            "name": "sles-11-factory-os-ready",
            "updated": "2019-05-07T15:45:10Z"
        },
        {
            "id": "d42b7a07-e329-46ac-82c1-28875498b145",
            "name": "rhel-6-factory-os-ready",
            "updated": "2019-05-07T15:44:54Z"
        },
        {
            "id": "d282ae55-ecc6-47a3-bb2f-4354bebf33e1",
            "name": "rhel-7-factory-base-vg00",
            "updated": "2019-05-07T15:37:25Z"
        },
        {
            "id": "0c0fb244-7553-4f20-bf3b-8e32d0527292",
            "name": "sles-12-factory-base-vg00",
            "updated": "2019-05-07T15:32:14Z"
        },
        {
            "id": "14a34117-91d5-4cbf-b039-613fd8b5ea65",
            "name": "rhel-6-factory-base-vg00",
            "updated": "2019-05-07T15:29:28Z"
        },
        {
            "id": "bf465c2d-9f4c-44a9-9cc8-ff488b79e9f6",
            "name": "rhel-7-factory-base",
            "updated": "2019-05-07T15:28:00Z"
        },
        {
            "id": "90d4e12d-6d7f-4f59-a4e6-28b1757f95bc",
            "name": "sles-11-factory-base-vg00",
            "updated": "2019-05-07T15:24:19Z"
        },
        {
            "id": "30109a53-4aab-4fb5-87ff-7650e75731b0",
            "name": "rhel-6-factory-base",
            "updated": "2019-05-07T15:20:39Z"
        },
        {
            "id": "80cd641b-bb53-46f7-b8f6-7f287507fc3c",
            "name": "sles-12-factory-base",
            "updated": "2019-05-07T15:20:10Z"
        },
        {
            "id": "dc2deb91-2ff0-4d9e-a44d-fa2d7a8e1c62",
            "name": "sles-11-factory-base",
            "updated": "2019-05-07T15:18:05Z"
        },
        {
            "id": "b6646eab-5908-4db4-a93a-1ca0ce52b76b",
            "name": "sles-11-factory-os-ready",
            "updated": "2019-05-07T14:27:41Z"
        },
        {
            "id": "850cdd08-a5a7-4e6b-a906-4fda157257b6",
            "name": "sles-12-factory-base",
            "updated": "2019-05-07T14:23:40Z"
        },
        {
            "id": "30325ffd-f17a-4db8-a2ef-a2e529163f03",
            "name": "sles-11-factory-base-vg00",
            "updated": "2019-05-07T14:08:22Z"
        },
        {
            "id": "70f49bc1-f793-4d1d-8317-e2d1d35993f7",
            "name": "rhel-6-factory-base-vg00",
            "updated": "2019-05-07T13:42:01Z"
        },
        {
            "id": "6bb77f3d-335b-459d-8aa1-dd3effd60672",
            "name": "rhel-6-factory-os-ready",
            "updated": "2019-05-07T13:40:17Z"
        },
        {
            "id": "1cbfe793-5ca5-4310-b121-e5065ffa0cf8",
            "name": "rhel-6-factory-base-vg00",
            "updated": "2019-05-07T13:25:46Z"
        },
        {
            "id": "17d0b51f-1c19-472a-9104-31624435bd63",
            "name": "rhel-7-factory-os-ready",
            "updated": "2019-05-07T13:18:55Z"
        },
        {
            "id": "4e1f6f7a-90fc-4055-9ee7-d284656fcd58",
            "name": "rhel-7-factory-base-vg00",
            "updated": "2019-05-07T12:41:21Z"
        },
        {
            "id": "7129df12-ae5b-47ff-905d-1e7bf79069cb",
            "name": "rhel-7-factory-base",
            "updated": "2019-05-07T12:31:32Z"
        },
        {
            "id": "a37ce4d3-fc3e-4ae9-8d24-038c638be629",
            "name": "rhel-6-factory-base-vg00",
            "updated": "2019-05-07T12:30:08Z"
        },
        {
            "id": "294821b3-e9df-4b12-ae39-8deb8f9c72ff",
            "name": "rhel-6-factory-base",
            "updated": "2019-05-07T12:21:36Z"
        },
        {
            "id": "520ae1ca-bb2f-4ccb-bed3-886ee39ccd5e",
            "name": "sles-11-factory-base",
            "updated": "2019-05-07T12:21:00Z"
        },
        {
            "id": "e041c0ed-c30f-4c61-a695-682e5a80026a",
            "name": "rhel-6-factory-os-ready",
            "updated": "2019-04-29T14:17:52Z"
        },
        {
            "id": "068ae5f0-d7a0-4419-829e-18eb25551c94",
            "name": "rhel-6-factory-base",
            "updated": "2019-04-29T14:04:20Z"
        },
        {
            "id": "2dfa8476-54dd-4dc5-80cc-5033466f2732",
            "name": "rhel-7-factory-base",
            "updated": "2019-04-26T13:40:59Z"
        },
        {
            "id": "61a5a77a-0e8a-47d0-938e-6202c5cc5177",
            "name": "rhel-7-factory-os-ready",
            "updated": "2019-04-26T13:40:11Z"
        },
        {
            "id": "b877f241-caa1-43c4-9465-fb5019d44f9b",
            "name": "sles-12-factory-base-vg00",
            "updated": "2019-04-26T13:45:40Z"
        },
        {
            "id": "baf4c87d-8363-48cf-ae02-be9caef4f60d",
            "name": "sles-12-factory-base",
            "updated": "2019-04-26T13:41:31Z"
        },
        {
            "id": "67a2ffa1-6591-42cb-95db-d2b1a854a78d",
            "name": "sles-11-factory-os-ready",
            "updated": "2019-04-26T10:17:26Z"
        }
    ]
}

Я бы хотел сгруппировать по json выше по атрибуту имени, как показано ниже.

{
  "rhel-7-factory-os-ready" : [
      {
          "id": "79334504-3e48-4411-b602-afe920e32e14",
          "updated": "2019-05-07T15:51:00Z"
      },
      {
          "id": "17d0b51f-1c19-472a-9104-31624435bd63",
          "updated": "2019-05-07T13:18:55Z"
      },
      {
          "id": "61a5a77a-0e8a-47d0-938e-6202c5cc5177",
          "updated": "2019-04-26T13:40:11Z"
      }
   ],
   "rhel-6-factory-os-ready" : [
      {
          "id": "d42b7a07-e329-46ac-82c1-28875498b145",
          "updated": "2019-05-07T15:44:54Z"
      },
      {
          "id": "6bb77f3d-335b-459d-8aa1-dd3effd60672",
          "updated": "2019-05-07T13:40:17Z"
      },
      {
          "id": "e041c0ed-c30f-4c61-a695-682e5a80026a",
          "updated": "2019-04-29T14:17:52Z"
      }
   ]
}

Я как-то не мог понять, как я могу добиться этого с помощью ansible.Было бы здорово, если бы кто-то мог помочь мне с этим.

Заранее спасибо, Харша

1 Ответ

3 голосов
/ 08 мая 2019

Оказывается, у Ansible уже есть фильтр groupby:

---
- hosts: localhost
  gather_facts: false
  tasks:
    - include_vars:
        file: data.json
        name: data

    - debug:
        var: data.images|groupby('name')
...