Partager via


Créer des environnements à partir de modèles ARM

Vous pouvez utiliser des environnements Azure DevTest Labs pour approvisionner facilement et de manière cohérente des labos avec plusieurs machines virtuelles et ressources PaaS (platform-as-a-service). Cet article explique comment créer des environnements DevTest Labs à partir de modèles Azure Resource Manager (ARM ). Vous pouvez utiliser cette approche pour créer un laboratoire pour une application web multiniveau ou une batterie de serveurs SharePoint.

Les ressources d’un environnement DevTest Labs partagent le même cycle de vie. Vous pouvez les gérer ensemble et suivre le coût des ressources PaaS individuelles dans l’environnement lab, tout comme vous effectuez le suivi des coûts des machines virtuelles individuelles.

Vous pouvez configurer un laboratoire pour utiliser des modèles d’environnement ARM à partir de référentiels de modèles Git publics ou privés. Le diagramme suivant montre comment DevTest Labs utilise un modèle ARM à partir d’un référentiel public ou privé pour déployer un environnement contenant des machines virtuelles et d’autres ressources.

Diagramme montrant l’obtention de modèles ARM à partir de référentiels Git et leur utilisation pour déployer des environnements avec des ressources PaaS.

Remarque

Si vous devez gérer des ressources, des stratégies et des paramètres de sécurité PaaS à l’échelle de l’entreprise, ou l’intégration CI/CD à travers les étapes de déploiement et les applications, envisagez d’utiliser les environnements de déploiement Azure (ADE) pour créer des environnements. ADE permet aux développeurs de déployer rapidement l’infrastructure d’application à l’aide de modèles basés sur des projets, en garantissant des environnements cohérents et sécurisés pour vos équipes de développement. Pour plus d’informations, consultez la documentation sur les environnements de déploiement Azure.

Prérequis

  • Pour ajouter ou configurer des référentiels de modèles pour un laboratoire, des autorisations d'au moins contributeur sont requises dans le laboratoire.
  • Pour créer des environnements Azure DevTest à partir de modèles ARM disponibles, au moins des autorisations utilisateur DevTest dans le labo.
  • Pour exécuter le script PowerShell dans Automatiser la création d’un environnement, Azure PowerShell avec le Az.Resources module installé.

Limites

Les environnements créés à partir de modèles d’environnement ARM dans DevTest Labs présentent les limitations suivantes :

  • La fonctionnalité d'extinction automatique pour les VMs n'est pas compatible.

  • Les stratégies de laboratoire suivantes ne sont pas appliquées ou évaluées :

    • Nombre de machines virtuelles par utilisateur de labo
    • Nombre de machines virtuelles Premium par utilisateur
    • Nombre de disques Premium par utilisateur

    Par exemple, même si la stratégie de laboratoire permet uniquement à chaque utilisateur de créer un maximum de cinq machines virtuelles, l’utilisateur peut déployer un modèle d’environnement ARM qui crée des dizaines de machines virtuelles.

Configurer des référentiels de modèles pour les laboratoires

Vous pouvez configurer votre laboratoire pour utiliser des modèles d’environnement ARM à partir du référentiel de modèles ARM public DevTest Labs et à partir d’autres référentiels Git publics ou privés. Lorsque vous activez l’accès lab à un référentiel de modèles, les utilisateurs du labo peuvent rapidement créer des environnements en sélectionnant des modèles dans le portail Azure, comme pour créer des machines virtuelles.

Le référentiel de modèles ARM public DevTest Labs inclut des modèles d’environnement pré-authentifiés pour Azure Web Apps, un cluster Azure Service Fabric et des batteries de serveurs SharePoint de développement. Pour une expérience de prise en main fluide avec les ressources PaaS, les modèles ont des paramètres d’entrée minimal.

Vous pouvez utiliser les modèles d’environnement public tels quels ou les personnaliser en fonction de vos besoins. Vous pouvez également suggérer des révisions ou des ajouts à un modèle public en soumettant une pull request sur le référentiel GitHub des modèles publics.

Vous pouvez également stocker des modèles d’environnement dans d’autres référentiels Git publics ou privés, et ajouter ces dépôts à votre laboratoire pour rendre les modèles disponibles pour tous les utilisateurs du labo. Pour obtenir des instructions, consultez Stocker des modèles ARM dans des référentiels Git et ajouter des référentiels de modèles aux laboratoires.

Configurer les paramètres d’environnement public

Vous pouvez activer l’accès au laboratoire au référentiel de modèles public DevTest Labs pour un laboratoire nouveau ou existant. Lorsque vous activez l’accès au référentiel, vous pouvez sélectionner les modèles d’environnement à mettre à la disposition des utilisateurs du labo.

Configurer l’accès à l’environnement public pour un nouveau labo

Pour configurer l’accès au référentiel d’environnement public lorsque vous créez un laboratoire, sous l’onglet Paramètres de base , définissez l’option Environnements publicssur Activé ou Désactivé. Cette option est définie sur Activé par défaut.

Capture d’écran qui montre comment activer les référentiels d’environnements publics pour un labo pendant le processus de création du labo.

Configurer l’accès à l’environnement public pour un laboratoire existant

Pour activer ou désactiver l’accès au référentiel d’environnement public pour un labo existant :

  1. Dans la page Vue d’ensemble du portail Azure pour votre laboratoire, sélectionnez Configuration et stratégies sous Paramètres dans le menu de navigation de gauche.

  2. Dans la page Configuration et stratégies , développez les bases de machines virtuelles dans le menu de gauche et sélectionnez Environnements publics.

  3. Dans la page Environnements publics , définissez l’option Activer les environnements publics pour cette option lab sur Oui ou Non.

    Capture d’écran qui montre comment activer tous les référentiels d’environnements publics pour une ressource de labo existante.

  4. Cliquez sur Enregistrer.

Sélectionner les modèles d’environnements publics disponibles

Lorsque vous activez le référentiel d’environnement public pour un laboratoire, tous les modèles d’environnement du référentiel sont disponibles par défaut pour vos utilisateurs de laboratoire. Vous pouvez choisir de désactiver l’accès aux modèles sélectionnés. Les modèles désactivés n’apparaissent plus dans la liste des environnements que les utilisateurs peuvent créer.

Pour interdire l’accès à des modèles d’environnement spécifiques :

  1. Dans la page Configuration et stratégies>bases de machines virtuelles>environnements publics du portail Azure de votre labo, désélectionnez les cases à cocher situées à côté des environnements que vous souhaitez désactiver.

  2. Cliquez sur Enregistrer.

Capture d’écran qui montre comment désélectionner des référentiels d’environnements publics pour un labo afin de désactiver l’accès pour les utilisateurs.

Configurer les autorisations utilisateur de l’environnement

Par défaut, les utilisateurs du labo sont affectés au rôle Lecteur dans les environnements qu’ils créent. Les lecteurs ne peuvent pas arrêter, démarrer ou modifier des ressources d’environnement telles que des serveurs SQL ou des bases de données. Pour permettre aux utilisateurs du labo de modifier des ressources dans leurs environnements, vous pouvez leur accorder le rôle Contributeur dans le groupe de ressources de leur environnement.

  1. Dans la page Vue d’ensemble du portail Azure pour votre laboratoire, sélectionnez Configuration et stratégies sous Paramètres dans le menu de navigation de gauche.

  2. Dans la page Configuration et stratégies , développez Paramètres dans le menu de gauche, puis sélectionnez Paramètres du laboratoire.

  3. Dans la page Paramètres du laboratoire sous Accès à l’environnement, définissez droits utilisateur du groupe de ressources à Contributeur.

  4. Cliquez sur Enregistrer.

Capture d’écran qui montre comment définir des autorisations de rôle Contributeur pour les utilisateurs du labo dans DevTest Labs.

Créer des environnements à partir de modèles

Si votre laboratoire est configuré pour utiliser des référentiels de modèles publics ou privés, vous pouvez créer un environnement en sélectionnant un modèle ARM disponible, similaire à la création d’une machine virtuelle. Suivez ces étapes pour créer un environnement à partir d’un modèle.

  1. Dans la page Vue d’ensemble du portail Azure pour votre laboratoire, sélectionnez Mes environnements sous Mon laboratoire dans le menu de navigation de gauche.

  2. Dans la page Mes environnements , sélectionnez Ajouter.

  3. Dans la page Choisir une base , sélectionnez l’environnement à créer.

    Capture d’écran qui montre les modèles ARM d’environnement public disponibles pour la ressource de labo DevTest Labs.

  4. Dans le volet Ajouter , entrez un nom d’environnement et configurez les autres paramètres.

    Capture d’écran qui montre le volet Ajouter avec les paramètres à configurer pour un environnement SharePoint.

    • Chaque modèle d’environnement ARM inclut des paramètres uniques. Lorsque vous ajoutez un environnement, vous devez entrer des valeurs pour tous les paramètres requis, indiqués par des astérisques rouges.
    • Certaines valeurs de paramètre dans un fichier de modèle ARM azuredeploy.parameters.json produisent des champs de paramètre vides sans valeur par défaut dans le volet Ajouter . Ces valeurs incluent GEN-UNIQUE, , GEN-UNIQUE-[N]GEN-SSH-PUB-KEYet GEN-PASSWORD.
    • Vous pouvez utiliser des secrets à partir d’Azure Key Vault pour sécuriser les paramètres de chaîne comme les mots de passe. Pour plus d’informations, consultez Stocker les secrets dans Azure Key Vault.
  5. Sélectionnez Ajouter. L’environnement démarre immédiatement le provisionnement.

Le processus d’approvisionnement d’un environnement peut prendre beaucoup de temps. La durée totale dépend du nombre d’instances de service, de machines virtuelles et d’autres ressources que DevTest Labs crée dans le cadre de l’environnement de labo.

Vous pouvez surveiller l’état d’approvisionnement dans la page Mes environnements . Sélectionnez Actualiser dans la barre d’outils pour mettre à jour l’affichage de page et vérifier l’état actuel. Pendant l’approvisionnement, l’état de l’environnement est Création. Une fois l’approvisionnement terminé, l’état passe à Prêt.

Capture d’écran qui montre comment afficher l’état d’approvisionnement de l’environnement de labo.

Lorsque l’environnement est prêt, vous pouvez développer l’environnement dans la liste Mes environnements pour afficher les machines virtuelles configurées par le modèle.

Capture d’écran qui montre la liste des machines virtuelles créées pour l’environnement nouvellement approvisionné.

Le déploiement crée un groupe de ressources pour approvisionner toutes les ressources d’environnement définies par le modèle ARM. Sélectionnez l’environnement dans la liste Mes environnements pour afficher le groupe de ressources et toutes les ressources créées par le modèle.

Capture d’écran qui montre le groupe de ressources avec toutes les ressources d’environnement, notamment les machines virtuelles, les disques, le réseau virtuel, etc.

Sélectionnez une machine virtuelle dans la liste pour afficher les propriétés de machine virtuelle et les actions disponibles, telles que la gestion de la configuration, des planifications et des stratégies.

Capture d’écran qui montre les actions disponibles pour la machine virtuelle d’environnement sélectionnée.

Automatiser la création d’environnements

Si vous devez créer plusieurs environnements pour les scénarios de développement ou de test, vous pouvez utiliser Azure PowerShell ou Azure CLI pour automatiser le déploiement d’environnement à partir de modèles ARM. Les étapes suivantes montrent comment automatiser le déploiement de modèles d’environnement ARM à l’aide de la commande Azure PowerShell New-AzResource .

Vous pouvez également automatiser le déploiement à l’aide de la commande azure CLI az deployment group create . Pour plus d’informations, veuillez consulter la section Déployer des ressources avec des modèles ARM et Azure CLI.

  1. Stockez le modèle d’environnement ARM dans un référentiel Git et ajoutez le référentiel à votre laboratoire.

  2. Enregistrez le script PowerShell suivant sur votre ordinateur en tant quedeployenv.ps1. Ce script appelle le modèle ARM pour créer l’environnement dans le labo.

    #Requires -Module Az.Resources
    
    [CmdletBinding()]
    
    param (
    # ID of the Azure subscription for the lab
    [string] [Parameter(Mandatory=$true)] $SubscriptionId,
    
    # Name of the lab in which to create the environment
    [string] [Parameter(Mandatory=$true)] $LabName,
    
    # Name of the template repository connected to the lab
    [string] [Parameter(Mandatory=$true)] $RepositoryName,
    
    # Name of the template (folder name in the GitHub repository)
    [string] [Parameter(Mandatory=$true)] $TemplateName,
    
    # Name of the environment to create in the lab
    [string] [Parameter(Mandatory=$true)] $EnvironmentName,
    
    # The parameters to pass to the template. Each parameter is prefixed with "-param_".
    # For example, if the template has a parameter named "TestVMName" with a value of "MyVMName",
    # the string in $Params is "-param_TestVMName MyVMName".
    # This convention allows the script to dynamically handle different templates.
    [Parameter(ValueFromRemainingArguments=$true)]
        $Params
    )
    
    # Sign in to Azure, or comment out this statement to completely automate environment creation.
    Connect-AzAccount
    
    # Select the subscription for your lab.  
    Set-AzContext -SubscriptionId $SubscriptionId | Out-Null
    
    # Get the user ID to use later in the script.
    $UserId = $((Get-AzADUser -UserPrincipalName ((Get-AzContext).Account).Id).Id)
    
    # Get the lab location.
    $lab = Get-AzResource -ResourceType "Microsoft.DevTestLab/labs" -Name $LabName
    if ($lab -eq $null) { throw "Unable to find lab $LabName in subscription $SubscriptionId." }
    
    # Get information about the repository connected to your lab.
    $repository = Get-AzResource -ResourceGroupName $lab.ResourceGroupName `
        -ResourceType 'Microsoft.DevTestLab/labs/artifactsources' `
        -ResourceName $LabName `
        -ApiVersion 2016-05-15 `
        | Where-Object { $RepositoryName -in ($_.Name, $_.Properties.displayName) } `
        | Select-Object -First 1
    if ($repository -eq $null) { throw "Unable to find repository $RepositoryName in lab $LabName." }
    
    # Get information about the ARM template base for the environment.
    $template = Get-AzResource -ResourceGroupName $lab.ResourceGroupName `
        -ResourceType "Microsoft.DevTestLab/labs/artifactSources/armTemplates" `
        -ResourceName "$LabName/$($repository.Name)" `
        -ApiVersion 2016-05-15 `
        | Where-Object { $TemplateName -in ($_.Name, $_.Properties.displayName) } `
        | Select-Object -First 1
    if ($template -eq $null) { throw "Unable to find template $TemplateName in lab $LabName." }
    
    # Build the template parameters by using parameter names and values.
    $parameters = Get-Member -InputObject $template.Properties.contents.parameters -MemberType NoteProperty | Select-Object -ExpandProperty Name
    $templateParameters = @()
    
    # Extract the custom parameters from $Params and format them as name/value pairs.
    $Params | ForEach-Object {
        if ($_ -match '^-param_(.*)' -and $Matches[1] -in $parameters) {
            $name = $Matches[1]                
        } elseif ( $name ) {
            $templateParameters += @{ "name" = "$name"; "value" = "$_" }
            $name = $null #reset name variable
        }
    }
    
    # Create an object to hold the necessary template properties.
    $templateProperties = @{ "deploymentProperties" = @{ "armTemplateId" = "$($template.ResourceId)"; "parameters" = $templateParameters }; }
    
    # Deploy the environment in your lab by using the New-AzResource command.
    New-AzResource -Location $Lab.Location `
        -ResourceGroupName $lab.ResourceGroupName `
        -Properties $templateProperties `
        -ResourceType 'Microsoft.DevTestLab/labs/users/environments' `
        -ResourceName "$LabName/$UserId/$EnvironmentName" `
        -ApiVersion '2016-05-15' -Force
    
    Write-Output "Environment $EnvironmentName completed."
    
  3. Pour utiliser le script, exécutez la commande suivante. Mettez à jour les espaces réservés dans la commande avec les valeurs de votre propre labo.

    .\DeployLabEnvironment.ps1 `
        -SubscriptionId "<Subscription ID>" `
        -LabName "<LabName>" `
        -ResourceGroupName "<LabResourceGroupName>" `
        -RepositoryName "<TemplateRepoName>" `
        -TemplateName "<TemplateFolderName>" `
        -EnvironmentName "<EnvironmentName>"