Skapa Azure DevTest Labs-miljöer från ARM-mallar
I den här artikeln får du lära dig hur du skapar Azure DevTest Labs-miljöer från ARM-mallar (Azure Resource Manager). Du kan använda DevTest Labs-miljöer för att enkelt och konsekvent etablera labb med flera virtuella datorer (VM) eller PaaS-resurser (plattform som en tjänst). Du kan använda den här metoden för att skapa ett labb för ett webbprogram med flera nivåer eller en SharePoint-servergrupp.
Resurser i en DevTest Labs-miljö delar samma livscykel och du kan hantera dem tillsammans. Du kan spåra kostnaden för labbmiljöer och PaaS-resurser på samma sätt som du spårar kostnader för enskilda virtuella labbdatorer.
Du kan konfigurera Azure DevTest Labs att använda ARM-mallar från en offentlig eller privat GitHub-lagringsplats. Följande diagram visar hur du skapar en miljö med DevTest Labs från en ARM-mall i en offentlig eller anpassad malllagringsplats. Avsnittet malllagringsplatser för labb beskriver den här processen i detalj.
Kommentar
Azure Deployment Environments (ADE) rekommenderas starkt för att skapa miljöer. ADE ger utvecklare möjlighet att snabbt distribuera appinfrastruktur med hjälp av projektbaserade mallar, vilket säkerställer konsekventa och säkra miljöer för dina utvecklingsteam.
Mer information om Azure Deployment Environments finns i dokumentationen om Azure Deployment Environments.
Förutsättningar
- Det är bra att ha erfarenhet av att konfigurera labbmiljöer i DevTest Labs. Om du är nybörjare på att arbeta med labb kan du börja med att läsa anvisningarna i avsnittet Konfigurera inställningar för offentlig miljö. Du måste förstå hur du konfigurerar malllagringsplatser, aktiverar eller inaktiverar offentliga miljöer och väljer mallar för att skapa labb.
Begränsningar
Det finns några begränsningar att tänka på när du skapar labb från ARM-mallar i DevTest Labs:
DevTest Labs stöder inte funktionen för automatisk avstängning av virtuella datorer (VM) för PaaS-resurser som skapats från ARM-mallar.
DevTest Labs utvärderar inte alla labbprinciper när du distribuerar ARM-mallar. Följande principer utvärderas inte:
- Antal virtuella datorer per labbanvändare
- Antal virtuella premiumdatorer per användare
- Antal premiumdiskar per användare
Anta att du har en labbprincip som gör att varje användare kan skapa högst fem virtuella datorer. I DevTest Labs kan varje användare distribuera en ARM-miljömall som skapar dussintals virtuella datorer.
Skapa miljöer från mallar
Du kan skapa en miljö från den offentliga malllagringsplatsen för Azure DevTest Labs eller lägga till en privat malllagringsplats i labbet.
Skapa en miljö från en mall genom att följa dessa steg:
På labböversiktssidan expanderar du avsnittet Mitt labb på den vänstra menyn och väljer Mina miljöer.
På sidan Mina miljöer väljer du Lägg till i verktygsfältet.
På sidan Välj en bas väljer du den ARM-miljömall som ska användas:
I fönstret Lägg till anger du ett miljönamn och konfigurerar de andra parameterinställningarna.
Typen och antalet parametrar är unika för varje ARM-mall. En röd asterisk (*) anger en obligatorisk inställning. Du måste ange värden för alla nödvändiga inställningar.
Vissa parametervärden i ARM-mallfilen (azuredeploy.parameters.json) skapar tomma inställningsfält i fönstret Lägg till (inget standardvärde). Dessa parametervärden är
GEN-UNIQUE
,GEN-UNIQUE-[N]
,GEN-SSH-PUB-KEY
ochGEN-PASSWORD
.För säkra strängparametrar som lösenord kan du använda hemligheter från Azure Key Vault. Information om hur du lagrar hemligheter i ett nyckelvalv och använder dem när du skapar labbresurser finns i Lagra hemligheter i Azure Key Vault.
Välj Lägg till för att skapa miljön. Miljön börjar etableras omedelbart.
Kommentar
Det kan ta lång tid att etablera en miljö. Den totala tiden beror på antalet tjänstinstanser, virtuella datorer och andra resurser som DevTest Labs skapar som en del av labbmiljön.
Om du vill övervaka etableringsstatusen går du tillbaka till sidan Mina miljöer för labbet:
Medan etablering pågår är miljöstatusen Skapa. När etableringen är klar ändras statusen till Klar. Du kan välja Uppdatera i verktygsfältet för att uppdatera sidvyn och kontrollera aktuell status.
När miljön är klar kan du expandera miljön i listan Mina miljöer för att se de virtuella datorer som har etablerats av mallen:
Distributionen skapar en ny resursgrupp för att etablera alla miljöresurser som definieras av ARM-mallen. Välj miljönamnet i listan Mina miljöer för att visa resursgruppen och alla resurser som skapats av mallen:
Välj en virtuell miljödator i listan för att se tillgängliga åtgärder för den virtuella datorn, till exempel hantering av konfiguration, scheman och principer:
Utforska malllagringsplatser
ARM-mallarna för att skapa miljöer i DevTest Labs är tillgängliga från två källor:
DevTest Labs har en offentlig ARM-malllagringsplats som innehåller förauktorerade miljömallar för Azure Web Apps, ett Azure Service Fabric-kluster och sharepoint-servergrupper för utveckling. Mallarna har minimala indataparametrar för en smidig komma igång-upplevelse med PaaS-resurser. Du kan använda mallarna för den offentliga miljön som de är eller anpassa dem efter dina behov. Du kan också föreslå revisioner eller tillägg till en offentlig mall genom att skicka en pull-begäran mot den offentliga GitHub-malllagringsplatsen.
Du kan lagra miljömallar i dina egna offentliga eller privata GitHub-lagringsplatser och lägga till dessa lagringsplatser i labbet för att göra mallarna tillgängliga för alla labbanvändare.
Konfigurera inställningar för offentlig miljö
Du kan konfigurera ditt labb för att aktivera användning av mallar från github-lagringsplatsen för den offentliga mallen. När du aktiverar den offentliga malllagringsplatsen för ett labb kan användarna snabbt skapa en labbmiljö genom att välja dessa mallar direkt i Azure Portal, ungefär som när de skapar en virtuell dator i ett labb. Dessutom kan du välja vilka mallar som är tillgängliga för användare för att skapa labbmiljöer.
Ange åtkomst till offentlig miljö för nytt labb
Konfigurera åtkomst till offentliga miljöer för lagringsplats för ett nytt labb genom att följa dessa steg:
Under processen för att skapa en DevTest Labs-resurs väljer du fliken Grundläggande inställningar .
Ange alternativet Offentliga miljöer till På:
Ange åtkomst till offentlig miljö för befintliga labb
För befintliga labb eller labb som du skapar med en ARM-mall kanske offentliga miljöer inte är aktiverade. Du kan styra åtkomsten till offentliga miljölagringsplatser för alla befintliga labb med alternativet Aktivera offentliga miljöer för den här labbuppgiften .
Följ de här stegen för att aktivera eller inaktivera åtkomsten till den offentliga miljöns lagringsplats för alla befintliga labb:
I Azure Portal går du till din DevTest Labs-labbresurs där du vill ange åtkomst till den offentliga miljön.
På sidan Översikt för labb expanderar du avsnittet Inställningar på den vänstra menyn och väljer Konfiguration och principer.
På sidan Konfiguration och principer expanderar du avsnittet Baser för virtuella datorer i den vänstra menyn och väljer Offentliga miljöer.
På sidan Offentliga miljöer anger du alternativet Aktivera offentliga miljöer för den här labbuppgiften till Ja:
Välj Spara.
Välj tillgängliga offentliga miljömallar
När du anger alternativet Aktivera offentliga miljöer för den här labbuppgiften för att styra åtkomsten till offentliga miljöer för ditt labb väljs alla miljömallar som standard. Alternativinställningen tillåter eller tillåter inte åtkomst till alla miljöer baserat på ditt val. Du kan använda kryssrutorna för markering i listan för att ange vilka miljöer som användarna kan komma åt.
Följ de här stegen för att endast tillåta åtkomst till specifika miljöer för labbet:
På sidan Offentliga miljöer anger du alternativet Aktivera offentliga miljöer för den här labbuppgiften till Ja.
Avmarkera specifika miljöer i listan för att göra dem otillgängliga för labbanvändare:
Välj Spara.
Konfigurera användarrättigheter för miljön
Som standard tilldelas labbanvändare rollen Läsare i offentliga miljölagringsplatser. De kan inte ändra miljöresurser och de kan inte stoppa eller starta resurser.
Använd följande steg för att ge labbanvändare rollen Deltagare och tillåta dem att redigera miljöresurser:
I Azure Portal går du till din DevTest Labs-labbresurs där du vill justera användarrolltilldelningar.
På sidan Översikt för labb expanderar du avsnittet Inställningar på den vänstra menyn och väljer Konfiguration och principer.
På sidan Konfiguration och principer expanderar du avsnittet Inställningar på den vänstra menyn och väljer Labbinställningar.
På sidan Labbinställningar anger du alternativet Användarrättigheter för miljöåtkomst>till Resursgrupp till Deltagare:
Välj Spara.
Automatisera kontrollmiljö
Om du behöver skapa flera miljöer för utvecklings- eller testscenarier kan du automatisera miljödistributionen med Azure PowerShell eller Azure CLI.
Labbägare och administratörer kan använda Azure PowerShell för att skapa virtuella datorer och miljöer från ARM-mallar. Du kan också automatisera distributionen via Azure CLI med kommandot az deployment group create för att skapa miljöer. Mer information finns i Distribuera resurser med ARM-mallar och Azure CLI.
Kommentar
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Automatisera distributionen av ARM-miljömallar med Azure PowerShell med följande steg:
Spara följande PowerShell-skript på datorn med filnamnet deployenv.ps1. Det här skriptet anropar ARM-mallen för att skapa miljön i labbet.
#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."
Uppdatera följande platshållare i skriptet med dina egna labbvärden:
SubscriptionId
LabName
ResourceGroupName
RepositoryName
TemplateName
(mallmapp i GitHub-lagringsplatsen)EnvironmentName
Följande kodfragment visar hur du kör skriptet med exempelparametervärden:
./deployenv.ps1 -SubscriptionId "000000000-0000-0000-0000-0000000000000" -LabName "mydevtestlab" -ResourceGroupName "mydevtestlabRG000000" -RepositoryName "myRepository" -TemplateName "ARM template folder name" -EnvironmentName "myNewEnvironment"
Kör skriptet.