Vytváření prostředí ze šablon ARM

Používejte prostředí Azure DevTest Labs k snadnému a konzistentnímu zřizování laboratoří s více virtuálními stroji (VM) a platformou jako službou (PaaS). Tento článek popisuje, jak vytvářet prostředí DevTest Labs ze šablon Azure Resource Manageru (ARM ). Tento přístup použijte k vytvoření laboratoře pro vícestupňovou webovou aplikaci, například webovou aplikaci s SQL databázovým backendem.

Prostředky v prostředí DevTest Labs sdílejí stejný životní cyklus. Můžete je spravovat společně a sledovat náklady na jednotlivé prostředky PaaS v testovacím prostředí stejně jako sledovat náklady na jednotlivé virtuální počítače.

Testovací prostředí můžete nakonfigurovat tak, aby používalo šablony prostředí ARM z veřejných nebo privátních úložišť šablon Gitu. Následující diagram ukazuje, jak DevTest Labs používá šablonu ARM z veřejného nebo privátního úložiště k nasazení prostředí obsahujícího virtuální počítače a další prostředky.

Diagram znázorňující získání šablon ARM z úložišť Git a jejich použití k nasazení prostředí s prostředky PaaS

Požadavky

  • Pokud chcete přidat nebo nakonfigurovat úložiště šablon pro testovací prostředí, alespoň oprávnění přispěvatele v testovacím prostředí.
  • K vytváření prostředí v DevTest Labs z dostupných šablon ARM musíte mít v laboratoři alespoň oprávnění DevTest User.
  • Pokud chcete spustit skript PowerShellu při vytváření prostředí Automate, Azure PowerShell s nainstalovaným modulem Az.Resources .

Přiřazení oprávnění k odběru pro nasazení šablon

Pokud vaše organizace vyžaduje oprávnění v rozsahu předplatného pro delegovanou správu šablon, přiřaďte roli Azure Lab Services Contributor v rozsahu předplatného.

Important

Pro tvorbu prostředí DevTest Labs uživatelé laboratoře stále potřebují alespoň oprávnění DevTest uživatele v laboratoři. Role Azure Lab Services Contributor nenahrazuje oprávnění na úrovni laboratoře v DevTest Labs.

  1. V portálu Azure otevřete předplatné.
  2. Vyberte Řízení přístupu (IAM)>Přidat>přiřadit roli.
  3. Vyhledejte a vyberte Azure Lab Services Contributor.
  4. Vyberte Další, vyberte uživatele, skupinu nebo principála služby a poté zvolte Zkontrolovat + přiřadit.

Pro přístup s nejmenšími oprávněními použijte vlastní roli, která zahrnuje pouze oprávnění požadovaná vaší šablonou a laboratorním workflow, místo širokých práv pro celé předplatné.

Následující příklad vlastní role omezuje přístup k vytváření prostředí DevTest Labs a viditelnosti nasazení. Přidejte pouze akce, které vaše šablona vyžaduje.

{
    "Name": "DevTest Labs Environment Template Deployer",
    "Description": "Create and read DevTest Labs environments from approved ARM templates.",
    "Actions": [
        "Microsoft.Authorization/*/read",
        "Microsoft.DevTestLab/labs/read",
        "Microsoft.DevTestLab/labs/EnsureCurrentUserProfile/action",
        "Microsoft.DevTestLab/labs/CreateEnvironment/action",
        "Microsoft.DevTestLab/labs/artifactSources/armTemplates/read",
        "Microsoft.DevTestLab/labs/policySets/EvaluatePolicies/action",
        "Microsoft.DevTestLab/labs/users/environments/read",
        "Microsoft.DevTestLab/labs/users/environments/write",
        "Microsoft.Resources/deployments/read",
        "Microsoft.Resources/deployments/operations/read",
        "Microsoft.Resources/subscriptions/resourceGroups/read"
    ],
    "NotActions": [],
    "DataActions": [],
    "NotDataActions": [],
    "AssignableScopes": [
        "/subscriptions/<subscription-id>"
    ]
}

Omezení

Prostředí vytvořená ze šablon prostředí ARM v DevTest Labs mají následující omezení:

  • Funkce autoshutdownu pro virtuální počítače není podporovaná.

  • Následující zásady testovacího prostředí se nevynucují ani nevyhodnocují:

    • Počet virtuálních počítačů na uživatele testovacího prostředí
    • Počet prémiových virtuálních počítačů na uživatele
    • Počet disků Premium na uživatele

    I když například zásady testovacího prostředí umožňují každému uživateli vytvořit maximálně pět virtuálních počítačů, může uživatel nasadit šablonu prostředí ARM, která vytvoří desítky virtuálních počítačů.

Konfigurace úložišť šablon pro testovací prostředí

Testovací prostředí můžete nakonfigurovat tak, aby používalo šablony prostředí ARM z veřejného úložiště šablon ARM DevTest Labs a z jiných veřejných nebo privátních úložišť Git. Když povolíte přístup laboratoře k repozitáři šablon, uživatelé laboratoře mohou rychle vytvářet prostředí výběrem šablon v portálu Azure.

DevTest Labs veřejný repozitář šablon ARM obsahuje předem připravené šablony prostředí, jako jsou Web App with SQL Database a ukázky clusterů Azure Service Fabric. Šablony mají minimální vstupní parametry, které vám pomůžou zajistit hladký začátek práce s prostředky PaaS.

Šablony veřejného prostředí můžete použít tak, jak jsou, nebo je přizpůsobit podle svých potřeb. Můžete také navrhnout revize nebo dodatky k veřejné šabloně odesláním žádosti o přijetí změn do veřejného úložiště šablon GitHubu.

Šablony prostředí můžete také uložit do jiných veřejných nebo privátních úložišť Git a přidat tato úložiště do testovacího prostředí, aby byly šablony dostupné všem uživatelům testovacího prostředí. Pokyny najdete v tématu Ukládání šablon ARM v úložištích Git a přidání úložišť šablon do testovacích prostředí.

Konfigurace nastavení veřejného prostředí

Pro nové nebo existující testovací prostředí můžete povolit přístup k veřejnému úložišti šablon DevTest Labs. Když povolíte přístup k úložišti, můžete vybrat, které šablony prostředí chcete zpřístupnit uživatelům testovacího prostředí.

Konfigurace přístupu k veřejnému prostředí pro nové testovací prostředí

Pokud chcete nakonfigurovat přístup k úložišti veřejného prostředí při vytváření nového testovacího prostředí, na kartě Základní nastavení nastavte možnost Veřejná prostředí na Zapnuto nebo Vypnuto. Tato možnost je ve výchozím nastavení zapnutá .

Snímek obrazovky, který ukazuje, jak povolit úložiště veřejného prostředí pro testovací prostředí během procesu vytváření testovacího prostředí

Konfigurace přístupu k veřejnému prostředí pro existující testovací prostředí

Povolení nebo zakázání přístupu k úložišti veřejného prostředí pro existující testovací prostředí:

  1. Na stránce Přehled portálu Azure pro vaši laboratoř vyberte v části Nastavení v levé navigační nabídce Konfigurace a zásady.

  2. Na stránce Konfigurace a zásady rozbalte základy virtuálních počítačů v nabídce vlevo a vyberte Veřejná prostředí.

  3. Na stránce Veřejná prostředí nastavte možnost Povolit veřejná prostředí pro toto cvičení na Ano nebo Ne.

    Snímek obrazovky, který ukazuje, jak povolit všechna úložiště veřejného prostředí pro existující prostředek testovacího prostředí

  4. Zvolte Uložit.

Výběr dostupných veřejných šablon prostředí

Když pro testovací prostředí povolíte úložiště veřejného prostředí, budou ve výchozím nastavení všechny šablony prostředí v úložišti dostupné uživatelům testovacího prostředí. Můžete se rozhodnout zakázat přístup k vybraným šablonům. Zakázané šablony se už nezobrazují v seznamu prostředí, která můžou uživatelé vytvářet.

Zakázání přístupu ke konkrétním šablonům prostředí:

  1. Na stránce portálu Azure Konfigurace a zásady>základy virtuálních počítačů>Veřejná prostředí, zrušte zaškrtnutí políček vedle prostředí, která chcete zakázat.

  2. Zvolte Uložit.

Snímek obrazovky, který ukazuje, jak zrušit výběr úložišť veřejného prostředí pro testovací prostředí a zakázat přístup uživatelům

Konfigurace uživatelských oprávnění prostředí

Ve výchozím nastavení jsou uživatelé laboratoře přiřazeni roli čtenáře v prostředích, která sami vytvářejí. Čtenáři nemůžou zastavit, spustit nebo upravit prostředky prostředí, jako jsou sql servery nebo databáze. Aby uživatelé laboratoře mohli upravovat zdroje ve svém prostředí, přidělte jim roli přispěvatele ve skupině zdrojů pro jejich prostředí.

  1. Na stránce Přehled portálu Azure pro vaši laboratoř vyberte v části Nastavení v levé navigační nabídce Konfigurace a zásady.

  2. Na stránce Konfigurace a zásady rozbalte Nastavení v nabídce vlevo a vyberte Nastavení testovacího prostředí.

  3. Na stránce Nastavení testovacího prostředí v části Přístup k prostředí nastavte možnost Uživatelská práva skupiny prostředků na Přispěvatel.

  4. Zvolte Uložit.

Snímek obrazovky, který ukazuje, jak nastavit oprávnění role Přispěvatel pro uživatele testovacího prostředí v DevTest Labs

Vytváření prostředí ze šablon

Pokud nastavíte laboratoř tak, aby používala veřejné nebo soukromé šablony, můžete vytvořit prostředí výběrem dostupné ARM šablony. Podle těchto kroků vytvořte prostředí ze šablony.

  1. Na stránce Přehled webu Azure Portal pro vaše testovací prostředí vyberte Moje prostředív levé navigační nabídce.

  2. Na stránce Moje prostředí vyberte Přidat.

  3. Na stránce Vyberte základ vyberte Webová aplikace s databází SQL.

    Screenshot, který ukazuje webovou aplikaci s SQL databází vybranou z dostupných šablon prostředí v Azure DevTest Labs.

  4. V panelu Přidat zadejte název prostředí a nastavte ostatní nastavení parametrů pro webovou aplikaci a SQL databázové zdroje.

    Screenshot, který ukazuje výběr webové aplikace pomocí SQL Database a zadání nastavení prostředí v Azure DevTest Labs.

    • Každá šablona prostředí ARM obsahuje jedinečné parametry. Když přidáte prostředí, musíte zadat hodnoty pro všechny požadované parametry označené červeným hvězdičkou.
    • Některé hodnoty parametrů v souboru azuredeploy.parameters.json v šabloně ARM vytváří prázdná pole nastavení bez výchozí hodnoty v podokně Přidat. Mezi tyto hodnoty patří GEN-UNIQUE, GEN-UNIQUE-[N], GEN-SSH-PUB-KEYa GEN-PASSWORD.
    • Tajné kódy ze služby Azure Key Vault můžete použít pro zabezpečené parametry řetězců , jako jsou hesla. Další informace najdete v tématu Ukládání tajných kódů ve službě Azure Key Vault.
  5. Vyberte Přidat. Prostředí se začne zřizovat okamžitě.

Proces zřízení prostředí může trvat dlouho. Celková doba závisí na počtu instancí služeb, virtuálních počítačích a dalších prostředcích, které DevTest Labs vytváří jako součást testovacího prostředí.

Stav zřizování můžete monitorovat na stránce Moje prostředí . Výběrem možnosti Aktualizovat na panelu nástrojů aktualizujte zobrazení stránky a zkontrolujte aktuální stav. Během zřizování je stav prostředí Vytváření. Po dokončení zřizování se stav změní na Připraveno.

Snímek obrazovky zobrazující, jak zjistit stav nasazování u laboratorního prostředí.

Nasazení vytvoří novou skupinu prostředků, která zřídí všechny prostředky prostředí definované šablonou ARM. Výběrem prostředí v seznamu Moje prostředí zobrazíte skupinu prostředků a všechny prostředky vytvořené šablonou.

Vyberte zdroj v seznamu pro zobrazení vlastností a dostupných akcí.

Automatizace vytváření prostředí

Pokud potřebujete vytvořit více prostředí pro scénáře vývoje nebo testování, můžete pomocí Azure PowerShellu nebo Azure CLI automatizovat nasazení prostředí ze šablon ARM. Následující kroky ukazují, jak automatizovat nasazení šablony prostředí ARM pomocí příkazu Azure PowerShellu New-AzResource .

Nasazení můžete také automatizovat pomocí příkazu az deployment group create v Azure CLI. Další informace najdete v tématu Nasazení prostředků pomocí šablon ARM a Azure CLI.

  1. Uložte šablonu prostředí ARM do úložiště Git a přidejte úložiště do testovacího prostředí.

  2. Uložte následující skript PowerShellu do počítače jako deployenv.ps1. Tento skript volá šablonu ARM pro vytvoření prostředí v testovacím prostředí.

    #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. Pokud chcete skript použít, spusťte následující příkaz. Aktualizujte zástupné symboly v příkazu vlastními hodnotami testovacího prostředí.

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