Разбор json данных с ansible и создание единого списка на основе ключа - PullRequest
0 голосов
/ 22 апреля 2020

Я работаю над маркировкой azure ресурсов, и у меня ниже json данных от Azure провайдеров. Мне нужно создать список, чтобы я мог найти правильные присвоения для каждого провайдера ресурсов и передать его своим ansible роль для дальнейшей обработки.

JSON Данные

{
  "value": [
    {
      "id": "/subscriptions/xxxxxxxx-xxxxx-xxxxxxxxxxx-xxxxxxx/providers/Microsoft.SqlVirtualMachine",
      "namespace": "Microsoft.SqlVirtualMachine",
      "authorizations": [
        {
          "applicationId": "bd93b475-f9e2-476e-963d-b2daf143ffb9",
          "roleDefinitionId": "f96bd990-ffdf-4c17-8ee3-77454d9c3f5d"
        }
      ],
      "resourceTypes": [
        {
          "resourceType": "SqlVirtualMachineGroups",
          "locations": [
            "West Central US",
            "Brazil South",
            "West Europe",
            "Australia Central",
            "Australia East",
            "Canada Central",
            "East Asia",
            "East US",
            "East US 2",
            "France South",
            "Central India",
            "West India",
            "Japan East",
            "Korea South",
            "North Central US",
            "UK South",
            "West US 2",
            "Australia Central 2",
            "Australia Southeast",
            "Canada East",
            "Central US",
            "France Central",
            "South India",
            "Japan West",
            "Korea Central",
            "North Europe",
            "South Central US",
            "Southeast Asia",
            "UK West",
            "West US",
            "South Africa North",
            "UAE Central",
            "UAE North",
            "Switzerland North",
            "Germany West Central",
            "Norway East"
          ],
          "apiVersions": [
            "2017-03-01-preview"
          ],
          "defaultApiVersion": "2017-03-01-preview",
          "capabilities": "CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"
        },
        {
          "resourceType": "SqlVirtualMachines",
          "locations": [
            "West Central US",
            "Brazil South",
            "West Europe",
            "Australia Central",
            "Australia East",
            "Canada Central",
            "East Asia",
            "East US",
            "East US 2",
            "France South",
            "Central India",
            "West India",
            "Japan East",
            "Korea South",
            "North Central US",
            "UK South",
            "West US 2",
            "Australia Central 2",
            "Australia Southeast",
            "Canada East",
            "Central US",
            "France Central",
            "South India",
            "Japan West",
            "Korea Central",
            "North Europe",
            "South Central US",
            "Southeast Asia",
            "UK West",
            "West US",
            "South Africa North",
            "UAE Central",
            "UAE North",
            "Switzerland North",
            "Germany West Central",
            "Norway East"
          ],
          "apiVersions": [
            "2017-03-01-preview"
          ],
          "defaultApiVersion": "2017-03-01-preview",
          "capabilities": "CrossResourceGroupResourceMove, CrossSubscriptionResourceMove, SupportsTags, SupportsLocation"
        },
        {
          "resourceType": "SqlVirtualMachineGroups/AvailabilityGroupListeners",
          "locations": [
            "West Central US",
            "Brazil South",
            "West Europe",
            "Australia Central",
            "Australia East",
            "Canada Central",
            "East Asia",
            "East US",
            "East US 2",
            "France South",
            "Central India",
            "West India",
            "Japan East",
            "Korea South",
            "North Central US",
            "UK South",
            "West US 2",
            "Australia Central 2",
            "Australia Southeast",
            "Canada East",
            "Central US",
            "France Central",
            "South India",
            "Japan West",
            "Korea Central",
            "North Europe",
            "South Central US",
            "Southeast Asia",
            "UK West",
            "West US",
            "South Africa North",
            "UAE Central",
            "UAE North",
            "Switzerland North",
            "Germany West Central",
            "Norway East"
          ],
          "apiVersions": [
            "2017-03-01-preview"
          ],
          "defaultApiVersion": "2017-03-01-preview",
          "capabilities": "None"
        },
        {
          "resourceType": "operations",
          "locations": [
            "West Central US",
            "Brazil South",
            "West Europe",
            "Australia Central",
            "Australia East",
            "Canada Central",
            "East Asia",
            "East US",
            "East US 2",
            "France South",
            "Central India",
            "West India",
            "Japan East",
            "Korea South",
            "North Central US",
            "UK South",
            "West US 2",
            "Australia Central 2",
            "Australia Southeast",
            "Canada East",
            "Central US",
            "France Central",
            "South India",
            "Japan West",
            "Korea Central",
            "North Europe",
            "South Central US",
            "Southeast Asia",
            "UK West",
            "West US",
            "South Africa North",
            "UAE Central",
            "UAE North",
            "Switzerland North",
            "Germany West Central",
            "Norway East"
          ],
          "apiVersions": [
            "2017-03-01-preview"
          ],
          "defaultApiVersion": "2017-03-01-preview",
          "capabilities": "None"
        },
        {
          "resourceType": "Locations",
          "locations": [
            "West Central US",
            "Brazil South",
            "West Europe",
            "Australia Central",
            "Australia East",
            "Canada Central",
            "East Asia",
            "East US",
            "East US 2",
            "France South",
            "Central India",
            "West India",
            "Japan East",
            "Korea South",
            "North Central US",
            "UK South",
            "West US 2",
            "Australia Central 2",
            "Australia Southeast",
            "Canada East",
            "Central US",
            "France Central",
            "South India",
            "Japan West",
            "Korea Central",
            "North Europe",
            "South Central US",
            "Southeast Asia",
            "South Africa North",
            "UK West",
            "West US",
            "UAE Central",
            "UAE North",
            "Switzerland North",
            "Germany West Central",
            "Norway East"
          ],
          "apiVersions": [
            "2017-03-01-preview"
          ],
          "defaultApiVersion": "2017-03-01-preview",
          "capabilities": "None"
        },
        {
          "resourceType": "Locations/OperationTypes",
          "locations": [
            "West Central US",
            "Brazil South",
            "West Europe",
            "Australia Central",
            "Australia East",
            "Canada Central",
            "East Asia",
            "East US",
            "East US 2",
            "France South",
            "Central India",
            "West India",
            "Japan East",
            "Korea South",
            "North Central US",
            "UK South",
            "West US 2",
            "Australia Central 2",
            "Australia Southeast",
            "Canada East",
            "Central US",
            "France Central",
            "South India",
            "Japan West",
            "Korea Central",
            "North Europe",
            "South Central US",
            "Southeast Asia",
            "UK West",
            "West US",
            "South Africa North",
            "UAE Central",
            "UAE North",
            "Switzerland North",
            "Germany West Central",
            "Norway East"
          ],
          "apiVersions": [
            "2017-03-01-preview"
          ],
          "defaultApiVersion": "2017-03-01-preview",
          "capabilities": "None"
        },
        {
          "resourceType": "Locations/sqlVirtualMachineOperationResults",
          "locations": [
            "West Central US",
            "Brazil South",
            "West Europe",
            "Australia Central",
            "Australia East",
            "Canada Central",
            "East Asia",
            "East US",
            "East US 2",
            "France South",
            "Central India",
            "West India",
            "Japan East",
            "Korea South",
            "North Central US",
            "UK South",
            "West US 2",
            "Australia Central 2",
            "Australia Southeast",
            "Canada East",
            "Central US",
            "France Central",
            "South India",
            "Japan West",
            "Korea Central",
            "North Europe",
            "South Central US",
            "Southeast Asia",
            "UK West",
            "West US",
            "South Africa North",
            "UAE Central",
            "UAE North",
            "Switzerland North",
            "Germany West Central",
            "Norway East"
          ],
          "apiVersions": [
            "2017-03-01-preview"
          ],
          "defaultApiVersion": "2017-03-01-preview",
          "capabilities": "None"
        },
        {
          "resourceType": "Locations/sqlVirtualMachineGroupOperationResults",
          "locations": [
            "West Central US",
            "Brazil South",
            "West Europe",
            "Australia Central",
            "Australia East",
            "Canada Central",
            "East Asia",
            "East US",
            "East US 2",
            "France South",
            "Central India",
            "West India",
            "Japan East",
            "Korea South",
            "North Central US",
            "UK South",
            "West US 2",
            "Australia Central 2",
            "Australia Southeast",
            "Canada East",
            "Central US",
            "France Central",
            "South India",
            "Japan West",
            "Korea Central",
            "North Europe",
            "South Central US",
            "Southeast Asia",
            "UK West",
            "West US",
            "South Africa North",
            "UAE Central",
            "UAE North",
            "Switzerland North",
            "Germany West Central",
            "Norway East"
          ],
          "apiVersions": [
            "2017-03-01-preview"
          ],
          "defaultApiVersion": "2017-03-01-preview",
          "capabilities": "None"
        },
        {
          "resourceType": "Locations/availabilityGroupListenerOperationResults",
          "locations": [
            "West Central US",
            "Brazil South",
            "West Europe",
            "Australia Central",
            "Australia East",
            "Canada Central",
            "East Asia",
            "East US",
            "East US 2",
            "France South",
            "Central India",
            "West India",
            "Japan East",
            "Korea South",
            "North Central US",
            "UK South",
            "West US 2",
            "Australia Central 2",
            "Australia Southeast",
            "Canada East",
            "Central US",
            "France Central",
            "South India",
            "Japan West",
            "Korea Central",
            "North Europe",
            "South Central US",
            "Southeast Asia",
            "UK West",
            "West US",
            "South Africa North",
            "UAE Central",
            "UAE North",
            "Switzerland North",
            "Germany West Central",
            "Norway East"
          ],
          "apiVersions": [
            "2017-03-01-preview"
          ],
          "defaultApiVersion": "2017-03-01-preview",
          "capabilities": "None"
        }
      ],
      "registrationState": "Registered",
      "registrationPolicy": "RegistrationRequired"
    },
    {
      "id": "/subscriptions/xxxxxxxx-xxxxx-xxxxxxxxxxx-xxxxxxx/providers/Microsoft.ChangeAnalysis",
      "namespace": "Microsoft.ChangeAnalysis",
      "authorizations": [
        {
          "applicationId": "2cfc91a4-7baa-4a8f-a6c9-5f3d279060b8",
          "roleDefinitionId": "f5a6bd90-af71-455c-9030-c486e8c42c95"
        }
      ],
      "resourceTypes": [
        {
          "resourceType": "operations",
          "locations": [],
          "apiVersions": [
            "2019-04-01-preview"
          ],
          "capabilities": "None"
        }
      ],
      "registrationState": "Registered",
      "registrationPolicy": "RegistrationRequired"
    },
    {
      "id": "/subscriptions/xxxxxxxx-xxxxx-xxxxxxxxxxx-xxxxxxx/providers/Microsoft.GuestConfiguration",
      "namespace": "Microsoft.GuestConfiguration",
      "authorizations": [
        {
          "applicationId": "e935b4a5-8968-416d-8414-caed51c782a9",
          "roleDefinitionId": "9c6ffa40-421e-4dc0-9739-76b0699a11de"
        }
      ],
      "resourceTypes": [
        {
          "resourceType": "guestConfigurationAssignments",
          "locations": [],
          "apiVersions": [
            "2018-11-20",
            "2018-06-30-preview",
            "2018-01-20-preview"
          ],
          "capabilities": "SupportsExtension"
        },
        {
          "resourceType": "software",
          "locations": [
            "East US 2",
            "South Central US"
          ],
          "apiVersions": [
            "2018-06-30-preview"
          ],
          "capabilities": "SupportsExtension"
        },
        {
          "resourceType": "softwareUpdates",
          "locations": [
            "East US 2",
            "South Central US"
          ],
          "apiVersions": [
            "2018-06-30-preview"
          ],
          "capabilities": "SupportsExtension"
        },
        {
          "resourceType": "softwareUpdateProfile",
          "locations": [
            "East US 2",
            "South Central US"
          ],
          "apiVersions": [
            "2018-06-30-preview"
          ],
          "capabilities": "SupportsExtension"
        },
        {
          "resourceType": "operations",
          "locations": [],
          "apiVersions": [
            "2018-11-20",
            "2018-06-30-preview",
            "2018-01-20-preview"
          ],
          "capabilities": "None"
        }
      ],
      "registrationState": "Registered",
      "registrationPolicy": "RegistrationRequired"
    }
  ]
}

Ожидаемый результат:

[ {"namespace": "Microsoft.SqlVirtualMachine", "resourceType": "SqlVirtualMachineGroups", "defaultApiVersion": "2017-03-01-preview"},
  {"namespace": "Microsoft.SqlVirtualMachine", "resourceType": "SqlVirtualMachines", "defaultApiVersion": "2017-03-01-preview"},
  {"namespace": "Microsoft.SqlVirtualMachine", "resourceType": "SqlVirtualMachineGroups/AvailabilityGroupListeners", "defaultApiVersion": "2017-03-01-preview"},
  ...
  ...
 ]

Обратите внимание, ключ resourceType является подэлементом resourceTypes

...