Avvio rapido: Usare Bicep per distribuire una definizione di applicazione gestita di Azure

Questo avvio rapido descrive come usare Bicep per distribuire una definizione di applicazione gestita di Azure dal catalogo di servizi. Le definizioni nel catalogo di servizi sono disponibili per i membri dell'organizzazione.

Per distribuire una definizione di applicazione gestita dal catalogo di servizi, seguire questa procedura:

  • Usare Bicep per sviluppare un modello che distribuisce una definizione di applicazione gestita.
  • Creare un file di parametri per la distribuzione.
  • Distribuire la definizione di applicazione gestita dal catalogo di servizi.

Prerequisiti

Per seguire la procedura descritta in questo articolo, sono necessari gli elementi seguenti:

Ottenere la definizione dell'applicazione gestita

Per ottenere la definizione dell'applicazione gestita con Azure PowerShell, eseguire i comandi seguenti.

In Visual Studio Code aprire un nuovo terminale di PowerShell e accedere alla sottoscrizione di Azure.

Connect-AzAccount

Verrà aperto il browser predefinito e richiesto di eseguire l'accesso ad Azure. Per altre informazioni, vedere Accedere con Azure PowerShell.

Da Azure PowerShell recuperare la definizione dell'applicazione gestita. In questo esempio usare il nome del gruppo di risorse bicepDefinitionRG creato durante la distribuzione della definizione dell'applicazione gestita.

Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionRG

Get-AzManagedApplicationDefinition elenca tutte le definizioni disponibili nel gruppo di risorse specificato, ad esempio sampleBicepManagedApplication.

Il comando seguente analizza l'output per visualizzare solo il nome della definizione e il nome del gruppo di risorse. I nomi vengono usati quando si distribuisce l'applicazione gestita.

Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionRG | Select-Object -Property Name, ResourceGroupName

Creare il file Bicep

Aprire Visual Studio Code e creare un nome file deployServiceCatalog.bicep. Copiare e incollare il codice seguente nel file e salvarlo.

@description('Region where the resources are deployed.')
param location string = resourceGroup().location

@description('Resource group name where the definition is stored.')
param definitionRG string

@description('Name of the service catalog definition.')
param definitionName string

// Parameters for the managed application's resource deployment
@description('Name of the managed application.')
param managedAppName string

@description('Name for the managed resource group.')
param mrgName string

@maxLength(40)
@description('Service plan name with maximum 40 alphanumeric characters and hyphens. Must be unique within a resource group in your subscription.')
param appServicePlanName string

@maxLength(47)
@description('Globally unique across Azure. Maximum of 47 alphanumeric characters or hyphens.')
param appServiceNamePrefix string

@maxLength(11)
@description('Use only lowercase letters and numbers and a maximum of 11 characters.')
param storageAccountNamePrefix string

@allowed([
  'Premium_LRS'
  'Standard_LRS'
  'Standard_GRS'
])
@description('The options are Premium_LRS, Standard_LRS, or Standard_GRS')
param storageAccountType string

@description('Resource ID for the managed application definition.')
var appResourceId = resourceId('${definitionRG}', 'Microsoft.Solutions/applicationdefinitions', '${definitionName}')

@description('Creates the path for the managed resource group. The resource group is created during deployment.')
var mrgId = '${subscription().id}/resourceGroups/${mrgName}'

resource bicepServiceCatalogApp 'Microsoft.Solutions/applications@2021-07-01' = {
  name: managedAppName
  kind: 'ServiceCatalog'
  location: location
  properties: {
    applicationDefinitionId: appResourceId
    managedResourceGroupId: mrgId
    parameters: {
      appServicePlanName: {
        value: appServicePlanName
      }
      appServiceNamePrefix: {
        value: appServiceNamePrefix
      }
      storageAccountNamePrefix: {
        value: storageAccountNamePrefix
      }
      storageAccountType: {
        value: storageAccountType
      }
    }
  }
}

Per altre informazioni sul tipo di risorsa, vedere Microsoft.Solutions/applications.

Creare il file di parametri

Aprire Visual Studio Code e creare un file di parametri denominato deployServiceCatalog.parameters.json. Copiare e incollare il codice seguente nel file e salvarlo.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "definitionName": {
      "value": "sampleBicepManagedApplication"
    },
    "definitionRG": {
      "value": "bicepDefinitionRG"
    },
    "managedAppName": {
      "value": "sampleBicepManagedApp"
    },
    "mrgName": {
      "value": "<placeholder for managed resource group name>"
    },
    "appServicePlanName": {
      "value": "demoAppServicePlan"
    },
    "appServiceNamePrefix": {
      "value": "demoApp"
    },
    "storageAccountNamePrefix": {
      "value": "demostg1234"
    },
    "storageAccountType": {
      "value": "Standard_LRS"
    }
  }
}

È necessario specificare diversi parametri per distribuire l'applicazione gestita:

Parametro Valore
definitionName Nome della definizione del catalogo di servizi. Questo esempio usa sampleBicepManagedApplication.
definitionRG Nome del gruppo di risorse in cui è archiviata la definizione. Questo esempio usa bicepDefinitionRG.
managedAppName Nome dell'applicazione gestita distribuita. Questo esempio usa sampleBicepManagedApp.
mrgName Nome univoco del gruppo di risorse gestite che contiene le risorse distribuite dell'applicazione. Il gruppo di risorse viene creato quando si distribuisce l'applicazione gestita. Per creare un nome di gruppo di risorse gestite, è possibile eseguire i comandi che seguono questo elenco di parametri.
appServicePlanName Creare un nome di piano. Può includere massimo 40 caratteri alfanumerici e trattini. Ad esempio, demoAppServicePlan. I nomi dei piani di servizio app devono essere univoci all'interno di un gruppo di risorse nella sottoscrizione.
appServiceNamePrefix Creare un prefisso per il nome del piano. Può includere massimo 47 caratteri alfanumerici e trattini. Ad esempio, demoApp. Durante la distribuzione, il prefisso viene concatenato con una stringa univoca per creare un nome univoco a livello globale in Azure.
storageAccountNamePrefix Usare solo lettere minuscole e numeri e un massimo di 11 caratteri. Ad esempio, demostg1234. Durante la distribuzione, il prefisso viene concatenato con una stringa univoca per creare un nome univoco a livello globale in Azure.
storageAccountType Le opzioni sono Premium_LRS, Standard_LRS e Standard_GRS.

È possibile eseguire i comandi seguenti per creare un nome per il gruppo di risorse gestite.

$mrgprefix = 'mrg-sampleBicepManagedApplication-'
$mrgtimestamp = Get-Date -UFormat "%Y%m%d%H%M%S"
$mrgname = $mrgprefix + $mrgtimestamp
$mrgname

Le variabili $mrgprefix e $mrgtimestamp vengono concatenate e archiviate nella variabile $mrgname. Il valore della variabile è espresso nel formato mrg-sampleBicepManagedApplication-20230512103059. Quando si distribuisce l'applicazione gestita, si usa il valore della variabile $mrgname.

Distribuire l'applicazione gestita

Usare Azure PowerShell o l'interfaccia della riga di comando di Azure per creare un gruppo di risorse e distribuire l'applicazione gestita.

New-AzResourceGroup -Name bicepAppRG -Location westus3

New-AzResourceGroupDeployment `
  -ResourceGroupName bicepAppRG `
  -TemplateFile deployServiceCatalog.bicep `
  -TemplateParameterFile deployServiceCatalog.parameters.json

La distribuzione potrebbe visualizzare un avviso linter Bicep che indica che la proprietà managedResourceGroupId prevede un ID risorsa. Poiché il gruppo di risorse gestite viene creato durante la distribuzione, non è disponibile un ID risorsa per la proprietà.

Visualizza risultati

Dopo la distribuzione dell'applicazione gestita del catalogo di servizi, sono disponibili due nuovi gruppi di risorse. Un gruppo di risorse contiene l'applicazione gestita. L'altro gruppo di risorse contiene le risorse gestite distribuite. In questo esempio, un servizio app, un piano di servizio app e un account di archiviazione.

Applicazione gestita

Al termine della distribuzione, è possibile verificare lo stato dell'applicazione gestita.

Eseguire il comando seguente per verificare lo stato dell'applicazione gestita.

Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepAppRG

Espandere le proprietà per semplificare la lettura delle informazioni relative a Properties.

Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepAppRG | Select-Object -ExpandProperty Properties

Risorse gestite

È possibile visualizzare le risorse distribuite nel gruppo di risorse gestite.

Per visualizzare le risorse del gruppo di risorse gestite, eseguire il comando seguente. La variabile $mrgname è stata creata al momento della creazione dei parametri.

Get-AzResource -ResourceGroupName $mrgname

Per visualizzare tutte le assegnazioni di ruolo per il gruppo di risorse gestite.

Get-AzRoleAssignment -ResourceGroupName $mrgname

Per la definizione dell'applicazione gestita creata negli articoli di avvio rapido è stato usato un gruppo con l'assegnazione di ruolo Proprietario. È possibile visualizzare il gruppo con il comando seguente.

Get-AzRoleAssignment -ResourceGroupName $mrgname -RoleDefinitionName Owner

È anche possibile elencare le assegnazioni di rifiuto per il gruppo di risorse gestite.

Get-AzDenyAssignment -ResourceGroupName $mrgname

Pulire le risorse

Quando l'applicazione gestita non è più necessaria, è possibile eliminare i gruppi di risorse, rimuovendo così tutte le risorse create. Ad esempio, sono stati creati i gruppi di risorse bicepAppRG e un gruppo di risorse gestite con il prefisso mrg-bicepManagedApplication.

Quando si elimina il gruppo di risorse bicepAppRG, l'applicazione gestita, il gruppo di risorse gestite e tutte le risorse di Azure vengono eliminati.

Il comando chiede di confermare la rimozione del gruppo di risorse.

Remove-AzResourceGroup -Name bicepAppRG

Per eliminare la definizione dell'applicazione gestita, eliminare i gruppi di risorse creati denominati packageStorageRG e bicepDefinitionRG.

Passaggi successivi