Démarrage rapide : Utiliser Bicep pour déployer une définition d’application managée Azure

Ce démarrage rapide indique comment utiliser Bicep pour déployer une définition d’application managée Azure depuis votre catalogue de services. Les définitions contenues dans votre catalogue de services sont accessibles aux membres de votre organisation.

Pour déployer une définition d’application managée depuis votre catalogue de services, effectuez les tâches suivantes :

  • Utilisez Bicep pour développer un modèle qui déploie une définition d’application managée.
  • Créez un fichier de paramètres pour le déploiement.
  • Déployez la définition d’application managée depuis votre catalogue de services.

Prérequis

Pour effectuer les tâches mentionnées dans cet article, vous avez besoin des éléments suivants :

Obtenir une définition d’application managée

Pour obtenir la définition d’application managée avec Azure PowerShell, exécutez les commandes suivantes.

Dans Visual Studio Code, ouvrez un nouveau terminal PowerShell et connectez-vous à votre abonnement Azure.

Connect-AzAccount

La commande ouvre votre navigateur par défaut et vous invite à vous connecter à Azure. Pour plus d’informations, accédez à Se connecter avec Azure PowerShell.

À partir d’Azure PowerShell, obtenez la définition de votre application managée. Dans cet exemple, utilisez le nom de groupe de ressources bicepDefinitionGroup qui a été créé lorsque vous avez déployé la définition d’application managée.

Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionGroup

Get-AzManagedApplicationDefinition liste toutes les définitions disponibles dans le groupe de ressources spécifié, comme sampleBicepManagedApplication.

La commande suivante analyse la sortie pour afficher uniquement le nom de la définition et le nom du groupe de ressources. Ces noms sont utilisés au moment de déployer l’application managée.

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

Créer le fichier Bicep

Ouvrez Visual Studio Code et créez un fichier sous le nom deployServiceCatalog.bicep. Copiez et collez le code suivant dans le fichier et enregistrez-le.

@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

@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
      }
    }
  }
}

Pour plus d’informations sur le type de ressource, accédez à Microsoft.Solutions/applications.

Créer le fichier de paramètres

Ouvrez Visual Studio Code et créez un fichier de paramètres nommé deployServiceCatalog-parameters.bicepparam. Copiez et collez le code suivant dans le fichier et enregistrez-le.

using './deployServiceCatalog.bicep'

param definitionName = 'sampleBicepManagedApplication'
param definitionRG = 'bicepDefinitionGroup'
param managedAppName = 'sampleBicepManagedApp'
param mrgName = 'placeholder for managed resource group name'
param appServicePlanName = 'demoAppServicePlan'
param appServiceNamePrefix = 'demoApp'

Vous devez fournir plusieurs paramètres pour le déploiement de l’application managée :

Paramètre Valeur
definitionName Nom de la définition du catalogue de services. Cet exemple utilise sampleBicepManagedApplication.
definitionRG Nom du groupe de ressources dans lequel la définition est stockée. Cet exemple utilise bicepDefinitionGroup.
managedAppName Nom de l’application managée déployée. Cet exemple utilise sampleBicepManagedApp.
mrgName Nom unique pour le groupe de ressources managé contenant les ressources déployées de l’application. Le groupe de ressources est créé lorsque vous déployez l’application managée. Pour créer un nom de groupe de ressources managées, exécutez les commandes qui suivent cette liste de paramètres et utilisez la valeur $mrgname pour remplacer l’espace réservé dans le fichier de paramètres.
appServicePlanName Créez un nom de plan. Vous disposez d’un maximum de 40 caractères alphanumériques et traits d’union. Par exemple, demoAppServicePlan. Les noms de plan App Service doivent être uniques au sein d’un groupe de ressources de votre abonnement.
appServiceNamePrefix Créez un préfixe pour le nom de plan. Vous disposez d’un maximum de 47 caractères alphanumériques ou traits d’union. Par exemple, demoApp. Pendant le déploiement, le préfixe est concaténé avec une chaîne unique pour créer un nom globalement unique dans Azure.

Vous pouvez exécuter les commandes suivantes pour créer un nom pour le groupe de ressources managées.

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

Les variables $mrgprefix et $mrgtimestamp sont concaténées et stockées dans la variable $mrgname. La valeur de la variable se présente sous la forme mrg-sampleBicepManagedApplication-20230512103059. Vous utilisez la valeur de la variable $mrgname lorsque vous déployez l’application managée.

Déployer l’application managée

Utilisez Azure PowerShell ou Azure CLI pour créer un groupe de ressources et déployer l’application managée.

New-AzResourceGroup -Name bicepApplicationGroup -Location westus

$deployparms = @{
  ResourceGroupName = "bicepApplicationGroup"
  TemplateFile = "deployServiceCatalog.bicep"
  TemplateParameterFile = "deployServiceCatalog-parameters.bicepparam"
  Name = "deployServiceCatalogApp"
}

New-AzResourceGroupDeployment @deployparms

La variable $deployparms utilise PowerShell splatting pour améliorer la lisibilité pour les valeurs de paramètres.

Il se peut que votre déploiement affiche un avertissement Linter Bicep indiquant que la propriété managedResourceGroupId attend un ID de ressource. Sachant que le groupe de ressources managées est créé pendant le déploiement, aucun ID de ressource n’est disponible pour la propriété.

Afficher les résultats

Une fois l’application managée de catalogue de services déployée, vous avez deux nouveaux groupes de ressources. Un groupe de ressources contient l’application managée. L’autre groupe de ressources contient les ressources managées qui ont été déployées. Dans cet exemple, un App Service, un plan App Service et un compte de stockage.

Application managée

Une fois le déploiement terminé, vous pouvez vérifier l’état de votre application managée.

Exécutez la commande suivante pour vérifier l’état de l’application managée.

Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepApplicationGroup

Développez les propriétés pour faciliter la lecture des informations Properties.

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

Ressources managées

Vous pouvez afficher les ressources déployées sur le groupe de ressources managé.

Pour afficher les ressources du groupe de ressources managé, exécutez la commande suivante. Vous avez créé la variable $mrgname lorsque vous avez créé les paramètres.

Get-AzResource -ResourceGroupName $mrgname

Pour afficher toutes les attributions de rôles du groupe de ressources managé.

Get-AzRoleAssignment -ResourceGroupName $mrgname

La définition d’application managée que vous avez créée dans les articles de démarrage rapide utilisait un groupe ayant l’attribution de rôle Propriétaire. Vous pouvez afficher le groupe à l’aide de la commande suivante.

Get-AzRoleAssignment -ResourceGroupName $mrgname -RoleDefinitionName Owner

Vous pouvez également répertorier les affectations de refus du groupe de ressources managé.

Get-AzDenyAssignment -ResourceGroupName $mrgname

Nettoyer les ressources

Lorsque vous en avez terminé avec l’application managée, vous pouvez supprimer les groupes de ressources, ce qui supprime toutes les ressources que vous avez créées. Par exemple, supposons que vous avez créé les groupes de ressources bicepApplicationGroup et un groupe de ressources managées avec le préfixe mrg-bicepManagedApplication.

Lorsque vous supprimez le groupe de ressources bicepApplicationGroup, l’application managée, le groupe de ressources managées et toutes les ressources Azure sont supprimés.

La commande vous invite à confirmer que vous souhaitez supprimer le groupe de ressources.

Remove-AzResourceGroup -Name bicepApplicationGroup

Si vous souhaitez supprimer la définition d’application managée, supprimez les groupes de ressources que vous avez créés et qui se nomment packageStorageGroup et bicepDefinitionGroup.

Étapes suivantes