Udostępnij przez


Microsoft.Solutions applicationDefinitions

Definicja zasobu Bicep

Typ zasobu applicationDefinitions można wdrożyć przy użyciu operacji docelowych:

Aby uzyskać listę zmienionych właściwości w każdej wersji interfejsu API, zobacz dziennika zmian.

Format zasobu

Aby utworzyć zasób Microsoft.Solutions/applicationDefinitions, dodaj następujący kod Bicep do szablonu.

resource symbolicname 'Microsoft.Solutions/applicationDefinitions@2023-12-01-preview' = {
  scope: resourceSymbolicName or scope
  location: 'string'
  managedBy: 'string'
  name: 'string'
  properties: {
    artifacts: [
      {
        name: 'string'
        type: 'string'
        uri: 'string'
      }
    ]
    authorizations: [
      {
        principalId: 'string'
        roleDefinitionId: 'string'
      }
    ]
    createUiDefinition: any(...)
    deploymentPolicy: {
      deploymentMode: 'string'
    }
    description: 'string'
    displayName: 'string'
    isEnabled: bool
    lockingPolicy: {
      allowedActions: [
        'string'
      ]
      allowedDataActions: [
        'string'
      ]
    }
    lockLevel: 'string'
    mainTemplate: any(...)
    managementPolicy: {
      mode: 'string'
    }
    notificationPolicy: {
      notificationEndpoints: [
        {
          uri: 'string'
        }
      ]
    }
    packageFileUri: 'string'
    policies: [
      {
        name: 'string'
        parameters: 'string'
        policyDefinitionId: 'string'
      }
    ]
    storageAccountId: 'string'
  }
  sku: {
    capacity: int
    family: 'string'
    model: 'string'
    name: 'string'
    size: 'string'
    tier: 'string'
  }
  tags: {
    {customized property}: 'string'
  }
}

Wartości właściwości

Microsoft.Solutions/applicationDefinitions

Nazwa Opis Wartość
lokalizacja Lokalizacja zasobu ciąg
zarządzanePrzez Identyfikator zasobu, który zarządza tym zasobem. ciąg
nazwa Nazwa zasobu struna

Ograniczenia:
Minimalna długość = 3
Maksymalna długość = 64 (wymagana)
Właściwości Właściwości definicji aplikacji zarządzanej. ApplicationDefinitionProperties (wymagane)
zakres Użyj polecenia podczas tworzenia zasobu w zakresie innym niż zakres wdrożenia. Ustaw tę właściwość na symboliczną nazwę zasobu, aby zastosować zasób rozszerzenia.
Numer jednostki magazynowej Jednostka SKU zasobu. sku
Tagi Tagi zasobów Słownik nazw tagów i wartości. Zobacz tagi w szablonach

Autoryzacja aplikacji

Nazwa Opis Wartość
IdentyfikatorGłówny Identyfikator podmiotu zabezpieczeń dostawcy. Jest to tożsamość, która będzie używana przez dostawcę do wywoływania usługi ARM w celu zarządzania zasobami aplikacji zarządzanej. ciąg (wymagany)
roleDefinitionId (identyfikator roli) Identyfikator definicji roli dostawcy. Ta rola zdefiniuje wszystkie uprawnienia, które dostawca musi mieć w grupie zasobów kontenera aplikacji zarządzanej. Ta definicja roli nie może mieć uprawnień do usuwania grupy zasobów. ciąg (wymagany)

ApplicationDefinitionArtifact

Nazwa Opis Wartość
nazwa Nazwa artefaktu definicji aplikacji zarządzanej. "ApplicationResourceTemplate"
"CreateUiDefinition"
"MainTemplateParameters"
"NotSpecified" (wymagane)
typ Typ artefaktu definicji aplikacji zarządzanej. "Niestandardowy"
"NotSpecified"
"Szablon" (wymagany)
Uri Identyfikator URI artefaktu definicji aplikacji zarządzanej. ciąg (wymagany)

ApplicationDefinitionProperties

Nazwa Opis Wartość
Artefakty Kolekcja artefaktów aplikacji zarządzanych. Portal użyje plików określonych jako artefakty, aby skonstruować środowisko użytkownika tworzenia aplikacji zarządzanej na podstawie definicji aplikacji zarządzanej. ApplicationDefinitionArtifact[]
Zezwoleń Autoryzacje dostawcy aplikacji zarządzanych. Autoryzacja aplikacji[]
createUiDefinition (definicja tworzenia) Plik json createUiDefinition dla szablonu tworzenia kopii zapasowej za pomocą zasobu Microsoft.Solutions/applications. Może to być ciąg JObject lub dobrze sformułowany ciąg JSON. jakikolwiek
deploymentPolicy (Polityka wdrożenia Zasady wdrażania aplikacji zarządzanych. ApplicationDeploymentPolicy
opis Opis definicji aplikacji zarządzanej. ciąg
nazwa wyświetlana Nazwa wyświetlana definicji aplikacji zarządzanej. ciąg
jest włączony Wartość wskazująca, czy pakiet jest włączony, czy nie. Bool
lockingPolicy (polityka blokowania) Zasady blokowania aplikacji zarządzanej. ApplicationPackageLockingPolicyDefinition
lockLevel (Poziom blokady) Poziom blokady aplikacji zarządzanej. "CanNotDelete"
"Brak"
"ReadOnly" (wymagane)
Szablon główny Wbudowany kod json szablonu głównego, który zawiera zasoby do aprowizacji. Może to być ciąg JObject lub dobrze sformułowany ciąg JSON. jakikolwiek
Polityka zarządzania Zasady zarządzania aplikacjami zarządzanymi, które określają dostęp wydawcy do zarządzanej grupy zasobów. Zasady zarządzania aplikacjami
NotificationPolicy (Polityka powiadamiania) Zasady powiadomień aplikacji zarządzanej. ApplicationNotificationPolicy
packageFileUri (identyfikator URI pakietu) Identyfikator URI pliku pakietu definicji aplikacji zarządzanej. Użyj tego elementu ciąg
manifest Zasady dostawcy aplikacji zarządzanych. Polityka aplikacji[]
storageAccountId (identyfikator konta storage) Identyfikator konta magazynu dla scenariusza bring your own storage. ciąg

ApplicationDeploymentPolicy

Nazwa Opis Wartość
deploymentMode (tryb wdrożenia) Tryb wdrażania aplikacji zarządzanej. "Ukończono"
"Przyrostowe"
"NotSpecified" (wymagane)

Zasady zarządzania aplikacjami

Nazwa Opis Wartość
tryb Tryb zarządzania aplikacjami zarządzanymi. "Zarządzane"
"NotSpecified"
"Niezarządzany"

ApplicationNotificationEndpoint

Nazwa Opis Wartość
Uri Identyfikator URI punktu końcowego powiadomień aplikacji zarządzanej. ciąg (wymagany)

ApplicationNotificationPolicy

Nazwa Opis Wartość
notificationEndpoints (Punkty końcowe powiadomień) Punkt końcowy powiadomień aplikacji zarządzanej. ApplicationNotificationEndpoint[] (wymagane)

ApplicationPackageLockingPolicyDefinition

Nazwa Opis Wartość
allowedActions (dozwoloneAkcje) Wykluczone akcje przypisania odmowy. ciąg znakowy[]
allowedDataActions (dozwolone Akcje Danych) Akcje danych wykluczone z przypisania odmowy. ciąg znakowy[]

Polityka aplikacji

Nazwa Opis Wartość
nazwa Nazwa zasad ciąg
Parametry Parametry zasad. ciąg
policyDefinitionId (identyfikator policyDefinitionId) Identyfikator definicji zasad. ciąg

Tagi zasobów

Nazwa Opis Wartość

Numer jednostki magazynowej

Nazwa Opis Wartość
dyspozycyjność Pojemność jednostki SKU. Int
rodzina Rodzina jednostek SKU. ciąg
model Model jednostki SKU. ciąg
nazwa Nazwa jednostki SKU. ciąg (wymagany)
rozmiar Rozmiar jednostki SKU. ciąg
warstwa Warstwa jednostki SKU. ciąg

Definicja zasobu szablonu usługi ARM

Typ zasobu applicationDefinitions można wdrożyć przy użyciu operacji docelowych:

Aby uzyskać listę zmienionych właściwości w każdej wersji interfejsu API, zobacz dziennika zmian.

Format zasobu

Aby utworzyć zasób Microsoft.Solutions/applicationDefinitions, dodaj następujący kod JSON do szablonu.

{
  "type": "Microsoft.Solutions/applicationDefinitions",
  "apiVersion": "2023-12-01-preview",
  "name": "string",
  "location": "string",
  "managedBy": "string",
  "properties": {
    "artifacts": [
      {
        "name": "string",
        "type": "string",
        "uri": "string"
      }
    ],
    "authorizations": [
      {
        "principalId": "string",
        "roleDefinitionId": "string"
      }
    ],
    "createUiDefinition": {},
    "deploymentPolicy": {
      "deploymentMode": "string"
    },
    "description": "string",
    "displayName": "string",
    "isEnabled": "bool",
    "lockingPolicy": {
      "allowedActions": [ "string" ],
      "allowedDataActions": [ "string" ]
    },
    "lockLevel": "string",
    "mainTemplate": {},
    "managementPolicy": {
      "mode": "string"
    },
    "notificationPolicy": {
      "notificationEndpoints": [
        {
          "uri": "string"
        }
      ]
    },
    "packageFileUri": "string",
    "policies": [
      {
        "name": "string",
        "parameters": "string",
        "policyDefinitionId": "string"
      }
    ],
    "storageAccountId": "string"
  },
  "sku": {
    "capacity": "int",
    "family": "string",
    "model": "string",
    "name": "string",
    "size": "string",
    "tier": "string"
  },
  "tags": {
    "{customized property}": "string"
  }
}

Wartości właściwości

Microsoft.Solutions/applicationDefinitions

Nazwa Opis Wartość
apiVersion (wersja interfejsu api) Wersja interfejsu API "2023-12-01-preview"
lokalizacja Lokalizacja zasobu ciąg
zarządzanePrzez Identyfikator zasobu, który zarządza tym zasobem. ciąg
nazwa Nazwa zasobu struna

Ograniczenia:
Minimalna długość = 3
Maksymalna długość = 64 (wymagana)
Właściwości Właściwości definicji aplikacji zarządzanej. ApplicationDefinitionProperties (wymagane)
Numer jednostki magazynowej Jednostka SKU zasobu. sku
Tagi Tagi zasobów Słownik nazw tagów i wartości. Zobacz tagi w szablonach
typ Typ zasobu "Microsoft.Solutions/applicationDefinitions"

Autoryzacja aplikacji

Nazwa Opis Wartość
IdentyfikatorGłówny Identyfikator podmiotu zabezpieczeń dostawcy. Jest to tożsamość, która będzie używana przez dostawcę do wywoływania usługi ARM w celu zarządzania zasobami aplikacji zarządzanej. ciąg (wymagany)
roleDefinitionId (identyfikator roli) Identyfikator definicji roli dostawcy. Ta rola zdefiniuje wszystkie uprawnienia, które dostawca musi mieć w grupie zasobów kontenera aplikacji zarządzanej. Ta definicja roli nie może mieć uprawnień do usuwania grupy zasobów. ciąg (wymagany)

ApplicationDefinitionArtifact

Nazwa Opis Wartość
nazwa Nazwa artefaktu definicji aplikacji zarządzanej. "ApplicationResourceTemplate"
"CreateUiDefinition"
"MainTemplateParameters"
"NotSpecified" (wymagane)
typ Typ artefaktu definicji aplikacji zarządzanej. "Niestandardowy"
"NotSpecified"
"Szablon" (wymagany)
Uri Identyfikator URI artefaktu definicji aplikacji zarządzanej. ciąg (wymagany)

ApplicationDefinitionProperties

Nazwa Opis Wartość
Artefakty Kolekcja artefaktów aplikacji zarządzanych. Portal użyje plików określonych jako artefakty, aby skonstruować środowisko użytkownika tworzenia aplikacji zarządzanej na podstawie definicji aplikacji zarządzanej. ApplicationDefinitionArtifact[]
Zezwoleń Autoryzacje dostawcy aplikacji zarządzanych. Autoryzacja aplikacji[]
createUiDefinition (definicja tworzenia) Plik json createUiDefinition dla szablonu tworzenia kopii zapasowej za pomocą zasobu Microsoft.Solutions/applications. Może to być ciąg JObject lub dobrze sformułowany ciąg JSON. jakikolwiek
deploymentPolicy (Polityka wdrożenia Zasady wdrażania aplikacji zarządzanych. ApplicationDeploymentPolicy
opis Opis definicji aplikacji zarządzanej. ciąg
nazwa wyświetlana Nazwa wyświetlana definicji aplikacji zarządzanej. ciąg
jest włączony Wartość wskazująca, czy pakiet jest włączony, czy nie. Bool
lockingPolicy (polityka blokowania) Zasady blokowania aplikacji zarządzanej. ApplicationPackageLockingPolicyDefinition
lockLevel (Poziom blokady) Poziom blokady aplikacji zarządzanej. "CanNotDelete"
"Brak"
"ReadOnly" (wymagane)
Szablon główny Wbudowany kod json szablonu głównego, który zawiera zasoby do aprowizacji. Może to być ciąg JObject lub dobrze sformułowany ciąg JSON. jakikolwiek
Polityka zarządzania Zasady zarządzania aplikacjami zarządzanymi, które określają dostęp wydawcy do zarządzanej grupy zasobów. Zasady zarządzania aplikacjami
NotificationPolicy (Polityka powiadamiania) Zasady powiadomień aplikacji zarządzanej. ApplicationNotificationPolicy
packageFileUri (identyfikator URI pakietu) Identyfikator URI pliku pakietu definicji aplikacji zarządzanej. Użyj tego elementu ciąg
manifest Zasady dostawcy aplikacji zarządzanych. Polityka aplikacji[]
storageAccountId (identyfikator konta storage) Identyfikator konta magazynu dla scenariusza bring your own storage. ciąg

ApplicationDeploymentPolicy

Nazwa Opis Wartość
deploymentMode (tryb wdrożenia) Tryb wdrażania aplikacji zarządzanej. "Ukończono"
"Przyrostowe"
"NotSpecified" (wymagane)

Zasady zarządzania aplikacjami

Nazwa Opis Wartość
tryb Tryb zarządzania aplikacjami zarządzanymi. "Zarządzane"
"NotSpecified"
"Niezarządzany"

ApplicationNotificationEndpoint

Nazwa Opis Wartość
Uri Identyfikator URI punktu końcowego powiadomień aplikacji zarządzanej. ciąg (wymagany)

ApplicationNotificationPolicy

Nazwa Opis Wartość
notificationEndpoints (Punkty końcowe powiadomień) Punkt końcowy powiadomień aplikacji zarządzanej. ApplicationNotificationEndpoint[] (wymagane)

ApplicationPackageLockingPolicyDefinition

Nazwa Opis Wartość
allowedActions (dozwoloneAkcje) Wykluczone akcje przypisania odmowy. ciąg znakowy[]
allowedDataActions (dozwolone Akcje Danych) Akcje danych wykluczone z przypisania odmowy. ciąg znakowy[]

Polityka aplikacji

Nazwa Opis Wartość
nazwa Nazwa zasad ciąg
Parametry Parametry zasad. ciąg
policyDefinitionId (identyfikator policyDefinitionId) Identyfikator definicji zasad. ciąg

Tagi zasobów

Nazwa Opis Wartość

Numer jednostki magazynowej

Nazwa Opis Wartość
dyspozycyjność Pojemność jednostki SKU. Int
rodzina Rodzina jednostek SKU. ciąg
model Model jednostki SKU. ciąg
nazwa Nazwa jednostki SKU. ciąg (wymagany)
rozmiar Rozmiar jednostki SKU. ciąg
warstwa Warstwa jednostki SKU. ciąg

Przykłady użycia

Szablony szybkiego startu platformy Azure

Następujące szablony szybkiego startu platformy Azure wdrożyć ten typ zasobu.

Szablon Opis
Tworzenie aplikacji zarządzanej, która wdraża połączone szablony

wdrażanie w usłudze Azure
Ten szablon tworzy aplikację zarządzaną, która wdraża połączone szablony.
Tworzenie aplikacji zarządzanej z dostosowanym widokiem

wdrażanie w usłudze Azure
Ten szablon tworzy aplikację zarządzaną z dostosowanym widokiem domyślnym.
Tworzenie aplikacji zarządzanej z metrykami i alertami

wdrażanie w usłudze Azure
Ten szablon tworzy aplikację zarządzaną z metrykami i alertami aplikacji.

Definicja zasobu narzędzia Terraform (dostawcy AzAPI)

Typ zasobu applicationDefinitions można wdrożyć przy użyciu operacji docelowych:

Aby uzyskać listę zmienionych właściwości w każdej wersji interfejsu API, zobacz dziennika zmian.

Format zasobu

Aby utworzyć zasób Microsoft.Solutions/applicationDefinitions, dodaj następujący program Terraform do szablonu.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.Solutions/applicationDefinitions@2023-12-01-preview"
  name = "string"
  parent_id = "string"
  location = "string"
  tags = {
    {customized property} = "string"
  }
  body = {
    managedBy = "string"
    properties = {
      artifacts = [
        {
          name = "string"
          type = "string"
          uri = "string"
        }
      ]
      authorizations = [
        {
          principalId = "string"
          roleDefinitionId = "string"
        }
      ]
      createUiDefinition = ?
      deploymentPolicy = {
        deploymentMode = "string"
      }
      description = "string"
      displayName = "string"
      isEnabled = bool
      lockingPolicy = {
        allowedActions = [
          "string"
        ]
        allowedDataActions = [
          "string"
        ]
      }
      lockLevel = "string"
      mainTemplate = ?
      managementPolicy = {
        mode = "string"
      }
      notificationPolicy = {
        notificationEndpoints = [
          {
            uri = "string"
          }
        ]
      }
      packageFileUri = "string"
      policies = [
        {
          name = "string"
          parameters = "string"
          policyDefinitionId = "string"
        }
      ]
      storageAccountId = "string"
    }
    sku = {
      capacity = int
      family = "string"
      model = "string"
      name = "string"
      size = "string"
      tier = "string"
    }
  }
}

Wartości właściwości

Microsoft.Solutions/applicationDefinitions

Nazwa Opis Wartość
lokalizacja Lokalizacja zasobu ciąg
zarządzanePrzez Identyfikator zasobu, który zarządza tym zasobem. ciąg
nazwa Nazwa zasobu struna

Ograniczenia:
Minimalna długość = 3
Maksymalna długość = 64 (wymagana)
parent_id Identyfikator zasobu, do który ma być stosowany ten zasób rozszerzenia. ciąg (wymagany)
Właściwości Właściwości definicji aplikacji zarządzanej. ApplicationDefinitionProperties (wymagane)
Numer jednostki magazynowej Jednostka SKU zasobu. sku
Tagi Tagi zasobów Słownik nazw tagów i wartości.
typ Typ zasobu "Microsoft.Solutions/applicationDefinitions@2023-12-01-preview"

Autoryzacja aplikacji

Nazwa Opis Wartość
IdentyfikatorGłówny Identyfikator podmiotu zabezpieczeń dostawcy. Jest to tożsamość, która będzie używana przez dostawcę do wywoływania usługi ARM w celu zarządzania zasobami aplikacji zarządzanej. ciąg (wymagany)
roleDefinitionId (identyfikator roli) Identyfikator definicji roli dostawcy. Ta rola zdefiniuje wszystkie uprawnienia, które dostawca musi mieć w grupie zasobów kontenera aplikacji zarządzanej. Ta definicja roli nie może mieć uprawnień do usuwania grupy zasobów. ciąg (wymagany)

ApplicationDefinitionArtifact

Nazwa Opis Wartość
nazwa Nazwa artefaktu definicji aplikacji zarządzanej. "ApplicationResourceTemplate"
"CreateUiDefinition"
"MainTemplateParameters"
"NotSpecified" (wymagane)
typ Typ artefaktu definicji aplikacji zarządzanej. "Niestandardowy"
"NotSpecified"
"Szablon" (wymagany)
Uri Identyfikator URI artefaktu definicji aplikacji zarządzanej. ciąg (wymagany)

ApplicationDefinitionProperties

Nazwa Opis Wartość
Artefakty Kolekcja artefaktów aplikacji zarządzanych. Portal użyje plików określonych jako artefakty, aby skonstruować środowisko użytkownika tworzenia aplikacji zarządzanej na podstawie definicji aplikacji zarządzanej. ApplicationDefinitionArtifact[]
Zezwoleń Autoryzacje dostawcy aplikacji zarządzanych. Autoryzacja aplikacji[]
createUiDefinition (definicja tworzenia) Plik json createUiDefinition dla szablonu tworzenia kopii zapasowej za pomocą zasobu Microsoft.Solutions/applications. Może to być ciąg JObject lub dobrze sformułowany ciąg JSON. jakikolwiek
deploymentPolicy (Polityka wdrożenia Zasady wdrażania aplikacji zarządzanych. ApplicationDeploymentPolicy
opis Opis definicji aplikacji zarządzanej. ciąg
nazwa wyświetlana Nazwa wyświetlana definicji aplikacji zarządzanej. ciąg
jest włączony Wartość wskazująca, czy pakiet jest włączony, czy nie. Bool
lockingPolicy (polityka blokowania) Zasady blokowania aplikacji zarządzanej. ApplicationPackageLockingPolicyDefinition
lockLevel (Poziom blokady) Poziom blokady aplikacji zarządzanej. "CanNotDelete"
"Brak"
"ReadOnly" (wymagane)
Szablon główny Wbudowany kod json szablonu głównego, który zawiera zasoby do aprowizacji. Może to być ciąg JObject lub dobrze sformułowany ciąg JSON. jakikolwiek
Polityka zarządzania Zasady zarządzania aplikacjami zarządzanymi, które określają dostęp wydawcy do zarządzanej grupy zasobów. Zasady zarządzania aplikacjami
NotificationPolicy (Polityka powiadamiania) Zasady powiadomień aplikacji zarządzanej. ApplicationNotificationPolicy
packageFileUri (identyfikator URI pakietu) Identyfikator URI pliku pakietu definicji aplikacji zarządzanej. Użyj tego elementu ciąg
manifest Zasady dostawcy aplikacji zarządzanych. Polityka aplikacji[]
storageAccountId (identyfikator konta storage) Identyfikator konta magazynu dla scenariusza bring your own storage. ciąg

ApplicationDeploymentPolicy

Nazwa Opis Wartość
deploymentMode (tryb wdrożenia) Tryb wdrażania aplikacji zarządzanej. "Ukończono"
"Przyrostowe"
"NotSpecified" (wymagane)

Zasady zarządzania aplikacjami

Nazwa Opis Wartość
tryb Tryb zarządzania aplikacjami zarządzanymi. "Zarządzane"
"NotSpecified"
"Niezarządzany"

ApplicationNotificationEndpoint

Nazwa Opis Wartość
Uri Identyfikator URI punktu końcowego powiadomień aplikacji zarządzanej. ciąg (wymagany)

ApplicationNotificationPolicy

Nazwa Opis Wartość
notificationEndpoints (Punkty końcowe powiadomień) Punkt końcowy powiadomień aplikacji zarządzanej. ApplicationNotificationEndpoint[] (wymagane)

ApplicationPackageLockingPolicyDefinition

Nazwa Opis Wartość
allowedActions (dozwoloneAkcje) Wykluczone akcje przypisania odmowy. ciąg znakowy[]
allowedDataActions (dozwolone Akcje Danych) Akcje danych wykluczone z przypisania odmowy. ciąg znakowy[]

Polityka aplikacji

Nazwa Opis Wartość
nazwa Nazwa zasad ciąg
Parametry Parametry zasad. ciąg
policyDefinitionId (identyfikator policyDefinitionId) Identyfikator definicji zasad. ciąg

Tagi zasobów

Nazwa Opis Wartość

Numer jednostki magazynowej

Nazwa Opis Wartość
dyspozycyjność Pojemność jednostki SKU. Int
rodzina Rodzina jednostek SKU. ciąg
model Model jednostki SKU. ciąg
nazwa Nazwa jednostki SKU. ciąg (wymagany)
rozmiar Rozmiar jednostki SKU. ciąg
warstwa Warstwa jednostki SKU. ciąg

Przykłady użycia

Przykłady programu Terraform

Podstawowy przykład wdrażania definicji aplikacji zarządzanej.

terraform {
  required_providers {
    azapi = {
      source = "Azure/azapi"
    }
    azurerm = {
      source = "hashicorp/azurerm"
    }
  }
}

provider "azurerm" {
  features {
  }
}

provider "azapi" {
  skip_provider_registration = false
}

variable "resource_name" {
  type    = string
  default = "acctest0001"
}

variable "location" {
  type    = string
  default = "westeurope"
}

data "azurerm_client_config" "current" {
}

data "azapi_resource_action" "roleDefinitions" {
  type                   = "Microsoft.Authorization@2018-01-01-preview"
  resource_id            = "/providers/Microsoft.Authorization"
  action                 = "roleDefinitions"
  method                 = "GET"
  response_export_values = ["*"]
}

resource "azapi_resource" "resourceGroup" {
  type     = "Microsoft.Resources/resourceGroups@2020-06-01"
  name     = var.resource_name
  location = var.location
}

resource "azapi_resource" "applicationDefinition" {
  type      = "Microsoft.Solutions/applicationDefinitions@2021-07-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = var.resource_name
  location  = var.location
  body = {
    properties = {
      authorizations = [
        {
          principalId      = data.azurerm_client_config.current.object_id
          roleDefinitionId = data.azapi_resource_action.roleDefinitions.output.value[0].name
        },
      ]
      description    = "Test Managed App Definition"
      displayName    = "TestManagedAppDefinition"
      isEnabled      = true
      lockLevel      = "ReadOnly"
      packageFileUri = "https://github.com/Azure/azure-managedapp-samples/raw/master/Managed Application Sample Packages/201-managed-storage-account/managedstorage.zip"
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}