Exercice - Publier un module dans votre registre

Effectué

Vous avez créé un registre privé que votre entreprise de jouets utilisera. Dans cet exercice, vous allez :

  • Créez un module pour les ressources du site web.
  • Créez un autre module pour les ressources du CDN.
  • Publiez les modules dans votre registre.
  • Répertoriez les modules dans le registre.

Cet exercice utilise l’extension Bicep pour Visual Studio Code. Assurez-vous d’installer cette extension dans Visual Studio Code.

Créer un module pour un site web

Vous avez précédemment créé un module qui déploie un site web. Ici, vous enregistrez le fichier de module pour pouvoir le publier.

  1. Ouvrez Visual Studio Code.

  2. Créez un nouveau fichier nommé website.bicep.

  3. Collez le contenu suivant dans le fichier website.bicep :

    @description('The Azure region into which the resources should be deployed.')
    param location string
    
    @description('The name of the App Service app.')
    param appServiceAppName string
    
    @description('The name of the App Service plan.')
    param appServicePlanName string
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string
    
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSkuName
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
      }
    }
    
    @description('The default host name of the App Service app.')
    output appServiceAppHostName string = appServiceApp.properties.defaultHostName
    
  4. Enregistrez le fichier.

    Vous pouvez sélectionner Fichier>Enregistrer sous ou Ctrl+S sur Windows (⌘+S sur macOS). Assurez-vous de bien noter l’emplacement où le fichier est enregistré. Par exemple, vous pouvez créer un dossier templates où l’enregistrer.

Créer un module pour un CDN

Comme pour les étapes précédentes, vous enregistrez un fichier de module précréé afin de pouvoir le publier rapidement.

  1. Créez un nouveau fichier nommé cdn.bicep.

  2. Collez le contenu suivant dans le fichier cdn.bicep :

    @description('The host name (address) of the origin server.')
    param originHostName string
    
    @description('The name of the CDN profile.')
    param profileName string = 'cdn-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the CDN endpoint')
    param endpointName string = 'endpoint-${uniqueString(resourceGroup().id)}'
    
    @description('Indicates whether the CDN endpoint requires HTTPS connections.')
    param httpsOnly bool
    
    var originName = 'my-origin'
    
    resource cdnProfile 'Microsoft.Cdn/profiles@2024-02-01' = {
      name: profileName
      location: 'global'
      sku: {
        name: 'Standard_Microsoft'
      }
    }
    
    resource endpoint 'Microsoft.Cdn/profiles/endpoints@2024-02-01' = {
      parent: cdnProfile
      name: endpointName
      location: 'global'
      properties: {
        originHostHeader: originHostName
        isHttpAllowed: !httpsOnly
        isHttpsAllowed: true
        queryStringCachingBehavior: 'IgnoreQueryString'
        contentTypesToCompress: [
          'text/plain'
          'text/html'
          'text/css'
          'application/x-javascript'
          'text/javascript'
        ]
        isCompressionEnabled: true
        origins: [
          {
            name: originName
            properties: {
              hostName: originHostName
            }
          }
        ]
      }
    }
    
    @description('The host name of the CDN endpoint.')
    output endpointHostName string = endpoint.properties.hostName
    
  3. Enregistrez le fichier.

Publier les modules dans votre registre

  1. Dans le terminal Visual Studio Code, exécutez les commandes suivantes. Remplacez YOUR_CONTAINER_REGISTRY_NAME par le nom de votre registre privé.

    az bicep publish \
      --file website.bicep \
      --target 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/website:v1'
    
    az bicep publish \
      --file cdn.bicep \
      --target 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/cdn:v1'
    

    Notez que vous n’avez pas besoin de vous connecter. Bicep utilise les informations de connexion d’Azure CLI pour vous authentifier auprès du registre.

  2. Exécutez la commande suivante pour répertorier les artefacts dans votre registre :

    az acr repository list \
      --name YOUR_CONTAINER_REGISTRY_NAME
    

    La sortie affiche les noms de vos modules :

    [
      "cdn",
      "website"
    ]
    
  1. Dans le terminal Visual Studio Code, exécutez les commandes suivantes. Remplacez YOUR_CONTAINER_REGISTRY_NAME par le nom de votre registre privé.

    bicep publish website.bicep `
      --target 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/website:v1'
    
    bicep publish cdn.bicep `
      --target 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/cdn:v1'
    

    Notez que vous n’avez pas besoin de vous connecter. Bicep utilise les informations de connexion d’Azure PowerShell pour vous authentifier auprès du registre.

  2. Exécutez la commande suivante pour répertorier les artefacts dans votre registre :

    Get-AzContainerRegistryRepository -RegistryName YOUR_CONTAINER_REGISTRY_NAME
    

    La sortie affiche les noms de vos modules :

    cdn
    website
    

Vous pouvez également utiliser le portail Azure pour répertorier les modules dans votre registre. Sous l’onglet Vue d’ensemble de votre groupe de ressources, sélectionnez YOUR_CONTAINER_REGISTRY_NAME, puis Dépôts. Vous vous connectez au portail Azure plus loin dans ce module.