Exercice : ajouter des ressources à une pile de déploiement

Effectué

Vous êtes au sprint 3 pour l’application des nouveaux dépôts. Récemment, l’équipe chargée des dépôts a demandé que des changements soient apportés à certains des services Azure en cours d'utilisation. Elle a également demandé la création d’autres services nécessaires pour soutenir l’application.

Dans cet exercice, vous créez une pile de déploiement délimitée à un groupe de ressources qui fait référence à un fichier Bicep. Le fichier définit un plan App Service, un App Service et une base de données Azure SQL. Vous modifiez ensuite la référence SKU du plan App Service et mettez à jour la pile de déploiement. Enfin, vous ajoutez un espace de travail Log Analytics existant et une nouvelle instance Application Insights pour prendre en charge la surveillance de l’application.

Pendant ce processus, vous allez :

  • Créer un fichier Bicep qui définit votre architecture initiale
  • Créez une pile de déploiement étendue à un groupe de ressources à l’aide de votre fichier Bicep.
  • Modifiez les propriétés d’une ressource managée existante.
  • Mettez à jour le fichier Bicep pour inclure un espace de travail Log Analytics existant et une nouvelle instance Application Insights.
  • Mettez à jour la pile de déploiement pour déployer les ressources managées.
  • Validez les ressources managées de la pile de déploiement.

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

Créer le fichier Bicep

Notre première étape consiste à créer un fichier Bicep qui définit nos ressources à utiliser avec la pile de déploiement.

  1. Ouvrez Visual Studio Code.

  2. Créez un fichier nommé main.bicep.

  3. Enregistrez le fichier vide afin que Visual Studio Code charge les outils Bicep.

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

  4. Ajoutez le code Bicep suivant dans le fichier. Vous allez bientôt déployer le modèle.

    // Parameters
    @description('The location for all resources.')
    param location string = 'eastus'
    
    @description('The name of the SQL database.')
    param sqlDatabaseName string = 'sqldb-${uniqueString(resourceGroup().id)}'
    
    @description('The password of the admin user.')
    param sqlServerAdminUserName string
    
    @description('The name of the admin user.')
    @secure()
    param sqlServerAdminPassword string
    
    @description('The name of the SQL server.')
    param sqlServerName string = 'sql-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the web application.')
    param webApplicationName string = 'webapp-${uniqueString(resourceGroup().id)}'
    
    // Variables
    @description('The name of the app service plan.')
    var appServicePlanName = 'plan-deposits'
    
    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'F1'
        capacity: 1
      }
    }
    
    // Resource - Web App
    resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
      name: webApplicationName
      location: location
      properties: {
        serverFarmId: appServicePlan.id  
      }
    }
    
    // Resource - SQL Server
    resource sqlServer 'Microsoft.Sql/servers@2021-11-01' ={
      name: sqlServerName
      location: location
      properties: {
        administratorLogin: sqlServerAdminUserName
        administratorLoginPassword: sqlServerAdminPassword
      }
    }
    
    // Resource - SQL Database
    resource sqlServerDatabase 'Microsoft.Sql/servers/databases@2021-11-01' = {
      parent: sqlServer
      name: sqlDatabaseName
      location: location
      sku: {
        name: 'Standard'
        tier: 'Standard'
      }
    }
    

    Notez que vous utilisez des expressions qui incluent l’interpolation de chaîne et la fonction uniqueString() pour définir des valeurs de paramètre par défaut. Une personne qui déploie ce modèle peut remplacer les valeurs de paramètre par défaut en spécifiant les valeurs au moment du déploiement, mais elle ne peut pas remplacer les valeurs des variables.

    Notez aussi que vous utilisez une variable pour le nom du plan App Service, mais que vous utilisez des paramètres pour les autres noms. Les comptes de stockage et les applications App Service ont besoin de noms globaux uniques. Toutefois, les noms de plans App Service doivent être uniques seulement au sein de leur groupe de ressources. Cette différence signifie qu’il est possible d’utiliser le même nom de plan App Service dans différents déploiements, à condition que les déploiements soient tous dans des groupes de ressources différents.

  5. Enregistrez les modifications du fichier.

Créer la pile de déploiement et déployer vos ressources sur Azure

Pour déployer ce modèle sur Azure, vous devez vous connecter à votre compte Azure à partir du terminal Visual Studio Code. Veillez à installer les outils Azure CLI.

  1. Dans le menu Terminal, sélectionnez Nouveau terminal. La fenêtre de terminal s’ouvre généralement dans la moitié inférieure de votre écran.

  2. Si l’interpréteur de commandes affiché sur le côté droit de la fenêtre de terminal est bash, il s’agit du bon interpréteur de commandes qui est ouvert et vous pouvez passer à la section suivante.

    Capture d’écran de la fenêtre de terminal Visual Studio Code avec l’option bash affichée.

  3. Si un interpréteur de commandes autre que bash apparaît, sélectionnez la flèche déroulante des interpréteurs de commandes, puis Azure Cloud Shell (Bash).

    Capture d’écran de la fenêtre de terminal Visual Studio Code avec la liste déroulante de l’interpréteur de commande affichée et l’option Git Bash par défaut sélectionnée.

  4. Dans la liste des interpréteurs de commandes de terminal, sélectionnez bash.

    Capture d’écran de la fenêtre de terminal Visual Studio Code avec le terminal bash sélectionné.

  5. Dans le terminal, accédez au répertoire où vous avez enregistré votre modèle. Par exemple, si vous avez enregistré votre modèle dans le dossier templates, vous pouvez utiliser la commande suivante :

    cd templates
    

Installer Bicep

Exécutez la commande suivante pour vous assurer de disposer de la dernière version de Bicep :

az bicep install && az bicep upgrade

Connexion à Azure avec Azure CLI

  1. Dans le terminal Visual Studio Code, connectez-vous à Azure en exécutant la commande suivante :

    az login
    
  2. Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.

    Le terminal Visual Studio Code affiche la liste des abonnements associés à ce compte.

  3. Dans la liste, trouvez l’abonnement que vous voulez utiliser pour cet exercice.

    Si vous avez manqué la liste lors de la connexion, vous pouvez utiliser l’extrait suivant pour obtenir à nouveau la liste de vos abonnements.

    az account list --output table
    
  4. Définissez l’abonnement par défaut pour toutes les commandes Azure CLI exécutées dans cette session.

    az account set --subscription "Your Subscription Name or ID"
    

Créer un groupe de ressources

Nous devons créer un groupe de ressources pour notre pile de déploiement et nos ressources managées. Pour créer un groupe de ressources, exécutez la commande suivante à partir du terminal dans Visual Studio Code.

az group create \
    --name rg-depositsApplication \
    --location eastus

Pour déployer ce modèle sur Azure, connectez-vous à votre compte Azure dans le terminal Visual Studio Code. Vérifiez que vous avez installé Azure PowerShell.

  1. Dans le menu Terminal, sélectionnez Nouveau terminal. La fenêtre de terminal s’ouvre généralement dans la moitié inférieure de votre écran.

  2. Si l’interpréteur de commandes affiché sur le côté droit de la fenêtre de terminal est powershell ou pwsh, il s’agit du bon interpréteur de commandes qui est ouvert et vous pouvez passer à la section suivante.

    Capture d’écran de la fenêtre de terminal Visual Studio Code, avec l’option pwsh indiquée dans la liste déroulante de l’interpréteur de commande.

  3. Si un shell autre que powershell ou pwsh apparaît, sélectionnez la flèche déroulante des interpréteurs de commandes, puis PowerShell.

    Capture d’écran de la fenêtre de terminal Visual Studio Code avec la liste déroulante de l’interpréteur de commande affichée avec PowerShell sélectionné.

  4. Dans la liste d’interpréteurs de commandes de terminal, sélectionnez powershell ou pwsh.

    Capture d’écran de la fenêtre de terminal Visual Studio Code avec le terminal PowerShell sélectionné.

  5. Dans le terminal, accédez au répertoire où vous avez enregistré votre modèle. Par exemple, si vous avez enregistré votre modèle dans le dossier templates, vous pouvez utiliser la commande suivante :

    Set-Location -Path templates
    

Installer l’interface CLI Bicep

Pour utiliser Bicep à partir d’Azure PowerShell, installez l’interface CLI de Bicep.

Connectez-vous à Azure en utilisant Azure PowerShell

  1. Dans le terminal Visual Studio Code, connectez-vous à Azure en exécutant la commande suivante :

    Connect-AzAccount
    
  2. Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.

  3. Récupérez l’ID de l’abonnement que vous voulez utiliser pour cet exercice en exécutant la commande suivante :

    Get-AzSubscription
    

    L’ID d’abonnement est la deuxième colonne. Copiez la deuxième colonne. Il doit ressembler à aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

  4. Définissez l’abonnement par défaut pour toutes les commandes Azure PowerShell exécutées dans cette session.

    Set-AzContext -SubscriptionId {Your subscription ID}
    

Créer un groupe de ressources

Nous devons créer un groupe de ressources pour notre pile de déploiement et nos ressources managées. Pour créer un groupe de ressources, exécutez la commande suivante à partir du terminal dans Visual Studio Code.

New-AzResourceGroup `
    -Name rg-depositsApplication `
    -Location eastus

Créer la pile de déploiement

Ensuite, nous devons créer notre pile de déploiement étendue à notre groupe de ressources récemment créé. Pour créer la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.

  1. Pour créer la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage detachAll \
        --deny-settings-mode none
    
  2. Il vous invite à entrer une valeur pour sqlServerAdminUserName. Créez un nom pour l’administrateur du serveur SQL, suivi de « Entrée. »

    Capture d’écran montrant la ligne de commande Azure CLI qui vous invite à entrer le nom d’utilisateur de l’administrateur du serveur SQL.

  3. Il vous invite à entrer une valeur pour sqlServerAdminPassword. Créez un mot de passe complexe pour l’administrateur du serveur SQL, suivi de « Entrée. »

    Capture d’écran montrant la ligne de commande Azure CLI qui vous invite à entrer un mot de passe d’administrateur de serveur SQL.

  4. Attendez que l’opération de mise à jour se termine avant de passer à la tâche suivante.

  1. Pour créer la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.

    New-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode None
    
  2. Il vous invite à entrer une valeur pour sqlServerAdminUserName. Créez un nom pour l’administrateur du serveur SQL, suivi de « Entrée. »

    Capture d’écran montrant la ligne de commande Azure PowerShell qui vous invite à entrer le nom d’utilisateur de l’administrateur du serveur SQL.

  3. Il vous invite à entrer une valeur pour sqlServerAdminPassword. Créez un mot de passe complexe pour l’administrateur du serveur SQL, suivi de « Entrée. »

    Capture d’écran montrant la ligne de commande Azure PowerShell qui vous invite à entrerun mot de passe de l’administrateur du serveur SQL.

  4. Attendez que l’opération de mise à jour se termine avant de passer à la tâche suivante.

Modifiez le fichier Bicep pour ajouter l’espace de travail Log Analytics existant et une nouvelle instance Application Insights.

  1. Ouvrez le fichier main.bicep dans Visual Studio Code.

  2. Ajoutez le code mis en surbrillance à la section Variables de votre fichier :

    // Variables
    @description('The name of the Application Insights instance.')
    var applicationInsightsName = 'appinsights-deposits'
    
    @description('The name of the app service plan.')
    var appServicePlanName = 'plan-deposits'
    
    @description('The name of the Log Analytics Workspace.')
    var logAnalyticsWorkspaceName = 'log-deposits'
    
  3. Ajoutez le code suivant au bas du fichier :

    // Resource - Log Analytics Workspace
    resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
      name: logAnalyticsWorkspaceName
      location: location
      properties: {
        retentionInDays: 30
        sku: {
          name: 'PerGB2018'
        }
      }
    }
    
    // Resource - Application Insights
    resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
      name: applicationInsightsName
      location: location
      kind: 'web'
      properties: {
        Application_Type: 'web'
        WorkspaceResourceId: logAnalyticsWorkspace.id
      }
    }
    
  4. Enregistrez les modifications du fichier.

Modifiez le fichier Bicep pour modifier le plan App Service et l’App service.

  1. Ouvrez le fichier main.bicep dans Visual Studio Code.

  2. Changez le nom de la référence SKU du plan App Service de F1 par S1 :

    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'S1'
        capacity: 1
      }
    }
    
  3. Ajoutez le code mis en surbrillance pour connecter l’instance Application Insights :

    // Resource - Web App
    resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
      name: webApplicationName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        siteConfig: {
          appSettings: [
            {
              name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
              value: applicationInsights.properties.InstrumentationKey
            }     
          ]
        }    
      }
    }
    
  4. Enregistrez les modifications du fichier.

Mettre à jour la pile de déploiement

Avec le fichier Bicep modifié, nous souhaitons mettre à jour la pile de déploiement afin que les modifications apportées aux ressources du fichier Bicep soient implémentées.

  1. Pour mettre à jour la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage detachAll \
        --deny-settings-mode none
    
  2. Vous recevez un message qui indique que la pile existe déjà dans l’abonnement actif. Si la valeur de l’action sur un paramètre non géré a changé, l’avertissement vous signale de nouvelles valeurs. Appuyez sur y, suivi de « Entrée ».

    Capture d’écran montrant l’avertissement de ligne de commande Azure CLI qui signale que la pile de déploiement existe déjà.

  3. Il vous invite à entrer une valeur pour sqlServerAdminUserName. Créez un nom pour l’administrateur du serveur SQL, suivi de « Entrée. »

    Capture d’écran montrant la ligne de commande Azure CLI qui vous invite à entrer le nom d’utilisateur de l’administrateur du serveur SQL.

  4. Il vous invite à entrer une valeur pour sqlServerAdminPassword. Créez un mot de passe complexe pour l’administrateur du serveur SQL, suivi de « Entrée. »

    Capture d’écran montrant la ligne de commande Azure CLI qui vous invite à entrer un mot de passe d’administrateur de serveur SQL.

  5. Attendez que l’opération de mise à jour se termine avant de passer à la tâche suivante.

Avec le fichier Bicep modifié, nous souhaitons mettre à jour la pile de déploiement afin que les modifications apportées au plan App Service soient implémentées.

  1. Pour mettre à jour la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode none
    
  2. Il vous invite à entrer une valeur pour sqlServerAdminUserName. Créez un nom pour l’administrateur du serveur SQL, suivi de « Entrée. »

    Capture d’écran montrant la ligne de commande Azure PowerShell qui vous invite à entrer le nom d’utilisateur de l’administrateur du serveur SQL.

  3. Il vous invite à entrer une valeur pour sqlServerAdminPassword. Créez un mot de passe complexe pour l’administrateur du serveur SQL, suivi de « Entrée. »

    Capture d’écran montrant la ligne de commande Azure PowerShell qui vous invite à entrerun mot de passe de l’administrateur du serveur SQL.

  4. Attendez que l’opération de mise à jour se termine avant de passer à la tâche suivante.

Vérifiez la mise à jour de la pile de déploiement et les ressources managées

Une fois la mise à jour terminée, nous souhaitons vérifier que la référence SKU du plan App Service est mise à jour et que la pile de déploiement gère l’espace de travail Log Analytics existant et la nouvelle instance Application Insights.

  1. Pour afficher la configuration du plan App Service, exécutez la commande suivante à partir du terminal dans Visual Studio Code.

    az appservice plan show \
        --name plan-deposits
        --resource-group rg-depositsApplication
    
  2. Notez la section de la référence SKU de la sortie. Le plan App Service est désormais sur la référence SKU S1. Le résultat devrait être similaire à ce qui suit :

    "sku": {
        "capacity": 1,
        "family": "S",
        "name": "S1",
        "size": "S1",
        "tier": "Standard"
    },
    
  3. Pour afficher la configuration de la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.

    az stack group show \
        --resource-group rg-depositsApplication \
        --name stack-deposits
    
  4. Notez la section ressources de la sortie. Nous voyons maintenant l’espace de travail Log Analytics existant et la nouvelle instance Application Insights répertoriée en tant que ressources managées. Le résultat devrait ressembler à la sortie suivante :

    "resources": [
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      }
    ],
    
  1. Pour afficher la configuration du plan App Service, exécutez la commande suivante à partir du terminal dans Visual Studio Code.

    $plan = Get-AzAppServicePlan `
        -ResourceGroupName rg-depositsApplication `
        -Name plan-deposits
    $sku = $plan.Sku
    $sku
    
  2. Notez la sortie. Le plan App Service est désormais sur la référence SKU S1. Le résultat doit ressembler à ce qui suit :

    Name         : S1
    Tier         : Standard
    Size         : S1
    Family       : S
    Capacity     : 1
    
  3. Pour afficher la configuration de la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.

    Get-AzResourceGroupDeploymentStack `
        -ResourceGroupName rg-depositsApplication `
        -Name stack-deposits
    
  4. Notez la section ressources de la sortie. Nous voyons maintenant l’espace de travail Log Analytics existant et la nouvelle instance Application Insights répertoriée en tant que ressources managées. Le résultat devrait ressembler à la sortie suivante :

    Resources                     : /subscriptions/./resourceGroups/rg-depositsApplication/././servers/                        sql-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits