Azure DevTest Labs-omgevingen maken van ARM-sjablonen

In dit artikel leert u hoe u Azure DevTest Labs omgevingen maakt op basis van ARM-sjablonen (Azure Resource Manager). U kunt DevTest Labs-omgevingen gebruiken om eenvoudig en consistent labs in te richten met meerdere virtuele machines (VM's) of PaaS-resources (Platform as a Service). Bijvoorbeeld om een lab te maken voor een webtoepassing met meerdere lagen of een SharePoint-farm.

Resources in een omgeving delen dezelfde levenscyclus en u kunt ze samen beheren. U kunt de kosten van labomgevingen en PaaS-resources bijhouden, net zoals u de kosten voor afzonderlijke lab-VM's bijhoudt.

U kunt Azure DevTest Labs configureren voor het gebruik van ARM-sjablonen vanuit een openbare of persoonlijke Git-opslagplaats. Meer informatie over sjabloonopslagplaatsen voor labs.

Diagram dat laat zien hoe u een omgeving maakt met Azure DevTest Labs op basis van een ARM-sjabloon in een openbare of aangepaste sjabloonopslagplaats.

Als u een ARM-sjabloon wilt gebruiken om een Azure DevTest Labs resource te maken, raadpleegt u de Quickstart: een ARM-sjabloon gebruiken om een lab te maken in DevTest Labs.

Beperkingen

Houd rekening met deze beperkingen wanneer u labs maakt op basis van ARM-sjablonen in DevTest Labs:

  • Automatisch afsluiten van vm's is niet van toepassing op PaaS-resources.

  • Niet alle labbeleidsregels worden geëvalueerd wanneer u ARM-sjablonen implementeert. Beleidsregels die niet worden geëvalueerd, zijn onder andere: het aantal VM's per labgebruiker, het aantal Premium-VM's per gebruiker en het aantal Premium-desks per gebruiker. Uw labbeleid kan bijvoorbeeld gebruikers beperken tot slechts vijf VM's per stuk. Een gebruiker kan echter een ARM-omgevingssjabloon implementeren waarmee tientallen VM's worden gemaakt.

Omgevingen maken van sjablonen

U kunt een omgeving maken vanuit de Azure DevTest Labs openbare sjabloonopslagplaats of u kunt een privésjabloonopslagplaats toevoegen aan uw lab.

Meer informatie over het configureren van omgevingen voor uw lab. Bijvoorbeeld het configureren van de sjabloonopslagplaatsen, het in- of uitschakelen van openbare omgevingen en het selecteren van specifieke sjablonen voor het maken van labs.

Een omgeving maken op basis van een sjabloon:

  1. Selecteer uw labresource in de Azure Portal.

  2. Selecteer Op de pagina Overzicht van het lab de optie Toevoegen in de bovenste werkbalk.

  3. Selecteer op de pagina Een basis kiezen de ARM-omgevingssjabloon die u wilt gebruiken. De beschikbare omgevingssjablonen worden als eerste weergegeven in de lijst met bases.

    Schermopname van openbare omgevingssjablonen.

  4. Voer in het scherm Toevoegen een omgevingsnaam in en vul de andere invoervelden in.

    Het aantal en het type invoervelden worden gedefinieerd in de ARM-sjabloon. Voer indien nodig waarden in voor invoervelden die door het sjabloonbestand azuredeploy.parameters.json als leeg of standaard worden gedefinieerd.

    • Voor secure string parameters kunt u geheimen uit Azure Key Vault gebruiken. Zie Geheimen opslaan in Azure Key Vault voor meer informatie over het opslaan van geheimen in een sleutelkluis en deze kunt gebruiken bij het maken van labresources.

    • In ARM-sjabloonbestanden genereren de GEN-UNIQUEparameterwaarden , GEN-UNIQUE-[N], GEN-SSH-PUB-KEYen GEN-PASSWORD lege invoervelden voor gebruikers om waarden in te voeren.

    Schermopname van het deelvenster Toevoegen voor een SharePoint-omgeving.

  5. Selecteer Toevoegen om de omgeving te maken.

    De omgeving begint onmiddellijk met inrichten. U kunt de inrichtingsstatus zien onder Mijn omgevingen op de pagina Overzicht van het lab. Het inrichten van een omgeving kan lang duren.

  6. Zodra het maken van de omgeving is voltooid, vouwt u de omgeving uit onder Mijn omgevingen om de lijst met VM's en andere resources weer te geven die door de sjabloon zijn ingericht.

    Schermopname van de lijst met VM's onder een omgeving.

    De implementatie maakt een nieuwe resourcegroep voor het inrichten van alle omgevingsresources die door de ARM-sjabloon zijn gedefinieerd. Selecteer de omgevingsnaam onder Mijn omgevingen om de resourcegroep en alle resources weer te geven die door de sjabloon zijn gemaakt.

    Schermopname van de resourcegroep met alle omgevingsresources.

  7. Selecteer een omgevings-VM om beschikbare acties voor de VM te bekijken, zoals het beheren van configuratie, planningen en beleidsregels.

    Schermopname van de beschikbare acties voor een omgevings-VM.

Opslagplaatsen voor omgevingssjablonen

Met Azure DevTest Labs kunt u omgevingen maken op basis van ARM-sjablonen. De ARM-sjablonen kunnen afkomstig zijn uit twee bronnen:

Tip

Als u revisies of toevoegingen aan de openbare sjablonen wilt voorstellen, dient u een pull-aanvraag in bij de opensource-opslagplaats voor openbare GitHub-sjablonen.

Openbare omgevingsinstellingen voor uw lab configureren

U kunt uw lab configureren om het gebruik van sjablonen uit de openbare sjabloonopslagplaats in te schakelen. Als u de openbare sjabloonopslagplaats voor een lab inschakelt, kunnen gebruikers vervolgens snel een omgeving maken door deze sjablonen rechtstreeks in de Azure Portal te selecteren, vergelijkbaar met hoe ze een virtuele machine in een lab maken.

Daarnaast kunt u selecteren welke sjablonen beschikbaar zijn voor gebruikers om omgevingen van te maken.

Openbare omgevingen inschakelen wanneer u een lab maakt

Toegang tot openbare omgevingsopslagplaats inschakelen voor een lab wanneer u een lab maakt:

  1. Selecteer het tabblad Basisinstellingen wanneer u een DevTest Labs-resource maakt.

  2. Selecteer Aan in het veld Openbare omgevingen .

    Schermopname van het inschakelen van openbare omgevingen voor een nieuw lab.

Openbare omgevingen in- of uitschakelen voor bestaande labs

Voor bestaande labs of labs die u maakt met een ARM-sjabloon, zijn openbare omgevingen mogelijk niet ingeschakeld. De openbare omgevingsopslagplaats voor bestaande labs in- of uitschakelen:

  1. Selecteer uw labresource in de Azure Portal.

  2. Selecteer Configuratie en beleid in de linkernavigatiebalk.

  3. Selecteer Openbare omgevingen onder Virtuele-machinebasissen in de linkernavigatiebalk.

  4. Selecteer Ja of Nee voor Openbare omgevingen inschakelen voor dit lab om openbare omgevingen voor het lab in of uit te schakelen.

  5. Selecteer Opslaan.

Beschikbare openbare omgevingssjablonen selecteren

Wanneer u openbare omgevingen inschakelt, zijn alle omgevingssjablonen in de opslagplaats beschikbaar voor het maken van omgevingen. Alleen specifieke omgevingen toestaan voor een lab:

  1. Selecteer uw labresource in de Azure Portal.

  2. Selecteer Configuratie en beleid in de linkernavigatiebalk.

  3. Selecteer Openbare omgevingen onder Virtuele-machinebasissen in de linkernavigatiebalk.

  4. Deselecteer specifieke omgevingen in de lijst om ze niet beschikbaar te maken voor labgebruikers en selecteer vervolgens Opslaan.

    Schermopname van de lijst met openbare omgevingen voor een lab.

Gebruikersrechten voor de omgeving configureren

Standaard hebben labgebruikers de rol Lezer in omgevingen en kunnen ze geen omgevingsresources wijzigen. Gebruikers kunnen bijvoorbeeld resources niet stoppen of starten. Labgebruikers de rol Inzender geven zodat ze omgevingsresources kunnen bewerken:

  1. Selecteer uw labresource in de Azure Portal.

  2. Selecteer Configuratie en beleid in de linkernavigatiebalk.

  3. Selecteer Labinstellingen in het linkernavigatievenster.

  4. Selecteer onderGebruikersrechten van resourcegroep> de optie Inzender en selecteer vervolgens Opslaan.

    Schermopname van het configureren van inzendermachtigingen voor labgebruikers.

Het maken van een omgeving automatiseren

Als u meerdere omgevingen wilt maken voor ontwikkelings- of testscenario's, kunt u de implementatie van de omgeving automatiseren met Azure PowerShell of Azure CLI.

U kunt de Azure CLI-opdracht az deployment group create gebruiken om omgevingen te maken. Zie Resources implementeren met Resource Manager-sjablonen en Azure CLI voor meer informatie.

Labeigenaren en -beheerders kunnen Azure PowerShell gebruiken om VM's en omgevingen te maken op basis van ARM-sjablonen.

Notitie

U wordt aangeraden de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Implementatie van ARM-omgevingssjablonen automatiseren met Azure PowerShell:

  1. Laat een ARM-omgevingssjabloon inchecken in een Git-opslagplaats en de opslagplaats toevoegen aan het lab.

  2. Sla het volgende PowerShell-script op uw computer op als deployenv.ps1. Met dit script wordt de ARM-sjabloon aangeroepen om de omgeving in het lab te maken.

    #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 Git repository)
    [string] [Parameter(Mandatory=$true)] $TemplateName,
    
    # Name of the environment to create in the lab
    [string] [Parameter(Mandatory=$true)] $EnvironmentName,
    
    # The parameters to be passed 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 will be "-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 that has the 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 the 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 the 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. Voer het script uit met behulp van uw eigen waarden om de voorbeeldwaarden te vervangen voor:

    • SubscriptionId
    • LabName
    • ResourceGroupName
    • RepositoryName
    • TemplateName (sjabloonmap in de Git-opslagplaats)
    • EnvironmentName
    ./deployenv.ps1 -SubscriptionId "000000000-0000-0000-0000-0000000000000" -LabName "mydevtestlab" -ResourceGroupName "mydevtestlabRG000000" -RepositoryName "myRepository" -TemplateName "ARM template folder name" -EnvironmentName "myNewEnvironment"
    

Volgende stappen