Környezetek létrehozása ARM-sablonokból

Használd az Azure DevTest Labs környezeteket, hogy könnyedén és következetesen biztosítsd a laborokat több virtuális gépgel (VM) és platform mint szolgáltatás (PaaS) erőforrással. Ez a cikk bemutatja, hogyan hozhat létre DevTest Labs-környezeteket az Azure Resource Manager-sablonokból . Ezt a megközelítést használjuk arra, hogy laboratóriumot hozz létre egy többszintű webalkalmazáshoz, például egy SQL adatbázis háttérrendszerrel rendelkező webalkalmazáshoz.

A DevTest Labs-környezetben lévő erőforrások azonos életciklussal rendelkeznek. Ezeket együtt kezelheti, és nyomon követheti az egyes PaaS-erőforrások költségeit a tesztkörnyezetben, ahogyan az egyes virtuális gépek költségeit is nyomon követheti.

Konfigurálhat egy tesztkörnyezetet arm-környezetsablonok használatára nyilvános vagy privát Git-sablontárakból. Az alábbi ábra bemutatja, hogy a DevTest Labs hogyan használ ARM-sablont egy nyilvános vagy privát adattárból egy virtuális gépeket és más erőforrásokat tartalmazó környezet üzembe helyezéséhez.

Az ARM-sablonok Git-adattárakból való lekérését és a Környezetek PaaS-erőforrásokkal való üzembe helyezését bemutató ábra.

Előfeltételek

  • Ahhoz, hogy sablontárakat adjon hozzá vagy konfiguráljon egy laborhoz, legalább közreműködői engedéllyel kell rendelkeznie a laborban.
  • A DevTest Labs-környezetek rendelkezésre álló ARM-sablonokból történő létrehozásához a laborban legalább DevTest User jogosultság szükséges.
  • Ha a PowerShell-szkriptet az Automate környezetlétrehozásban szeretné futtatni, az Azure PowerShell telepítve van a Az.Resources modullal.

Előfizetési jogosultságok hozzárendelése sablon üzembe helyezéséhez

Ha a szervezete előfizetési körben jogosultságot igényel az delegált sablonkezeléshez, rendelje az Azure Lab Services Contributor szerepét az előfizetési keretben.

Important

A DevTest Labs környezet létrehozásához a labor felhasználóinak még legalább DevTest felhasználói jogosultságokra van szükségük a laborban. Az Azure Lab Services Contributor szerepe nem helyettesíti a DevTest Labs laborszintű jogosultságait.

  1. Az Azure portálban nyisd meg az előfizetésedet.
  2. Válassza a Hozzáférés-vezérlés (IAM)>Hozzáadás>Szerepkör-hozzárendelés hozzáadása lehetőséget.
  3. Keresd meg és válaszd az Azure Lab Services Contributor nevű jelölt.
  4. Válaszd a „Tovább” lehetőséget, válaszd ki a felhasználót, csoportot vagy szolgáltatásnevet, majd válaszd a „Felülvizsgálat + hozzárendelés” lehetőséget.

A legkisebb jogosultságú hozzáféréshez használj egy egyedi szerepet, amely csak a sablon és a labor munkafolyamata által szükséges jogosultságokat tartalmazza, nem pedig széles előfizetéses jogokat.

A következő egyéni szerepkörre vonatkozó példa korlátozza a hozzáférést a DevTest Labs-környezetek létrehozásához, valamint a telepítések láthatóságához. Csak azokat a műveleteket add be, amiket a sablonod igényel.

{
    "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>"
    ]
}

Korlátozások

A DevTest Labs ARM-környezetsablonjaiból létrehozott környezetek a következő korlátozásokkal rendelkeznek:

  • A virtuális gépek autoshutdown funkciója nem támogatott.

  • A következő laborszabályzatok nincsenek kényszerítve vagy kiértékelve:

    • Virtuális gépek száma tesztkörnyezet-felhasználónként
    • Prémium szintű virtuális gépek száma felhasználónként
    • Prémium szintű lemezek száma felhasználónként

    Ha például a laborszabályzat csak öt virtuális gép létrehozását teszi lehetővé, a felhasználó üzembe helyezhet egy ARM-környezetsablont, amely több tucat virtuális gépet hoz létre.

Sablontárak konfigurálása tesztkörnyezetekhez

A tesztkörnyezetet úgy konfigurálhatja, hogy ARM-környezetsablonokat használjon a DevTest Labs nyilvános ARM-sablontárából és más nyilvános vagy privát Git-adattárakból. Ha engedélyezed a laborhozzáférést egy sablon tárolóhoz, a laborfelhasználók gyorsan létrehozhatnak környezeteket a Azure portálon sablonok kiválasztásával.

A DevTest Labs nyilvános ARM sablon tárolója előre megírt környezeti sablonokat tartalmaz, mint például Web App SQL Database-lel és Azure Service Fabric klaszterminták. A PaaS-erőforrások zökkenőmentes használatbavétele érdekében a sablonok minimális bemeneti paraméterekkel rendelkeznek.

A nyilvános környezet sablonjait igény szerint használhatja, vagy testre szabhatja őket. A nyilvános sablon változatait vagy kiegészítéseit úgy is javasolhatja, hogy lekéréses kérelmet küld a GitHub nyilvános sablontárházába.

A környezetsablonokat más nyilvános vagy privát Git-adattárakban is tárolhatja, és ezeket az adattárakat hozzáadhatja a laborhoz, hogy a sablonokat elérhetővé tegye az összes tesztkörnyezet-felhasználó számára. Útmutatásért lásd: Arm-sablonok tárolása a Git-adattárakban , és sablontárak hozzáadása a laborokhoz.

Nyilvános környezet beállításainak konfigurálása

Engedélyezheti a tesztkörnyezet hozzáférését a DevTest Labs nyilvános sablontárához egy új vagy meglévő tesztkörnyezethez. Ha engedélyezi az adattárhoz való hozzáférést, kiválaszthatja, hogy mely környezeti sablonokat tegye elérhetővé a tesztkörnyezet felhasználói számára.

Nyilvános környezet hozzáférésének konfigurálása új tesztkörnyezethez

Ha új tesztkörnyezet létrehozásakor szeretné konfigurálni a nyilvános környezet adattár-hozzáférését, az Alapbeállítások lapon állítsa be vagyki a Nyilvános környezetek beállítást. Ez a beállítás alapértelmezés szerint Be értékre van állítva.

Képernyőkép, amely bemutatja, hogyan engedélyezheti a nyilvános környezeti adattárakat egy labor számára a labor létrehozása során.

Nyilvános környezet hozzáférésének konfigurálása meglévő tesztkörnyezethez

A nyilvános környezeti adattár hozzáférésének engedélyezése vagy letiltása egy meglévő tesztkörnyezetben:

  1. A tesztkörnyezet Azure Portaláttekintési lapján válassza a Konfiguráció és szabályzatok lehetőséget a bal oldali navigációs menü Beállítások területén.

  2. A Konfiguráció és szabályzatok lapon bontsa ki a virtuálisgép-bázisokat a bal oldali menüben, és válassza a Nyilvános környezetek lehetőséget.

  3. A Nyilvános környezetek lapon állítsa a tesztkörnyezethez tartozó Nyilvános környezetek engedélyezése beállítást Igen vagy Nem értékre.

    Képernyőkép, amely bemutatja, hogyan engedélyezheti az összes nyilvános környezeti adattárat egy meglévő laborerőforráshoz.

  4. Válassza a Mentés lehetőséget.

Elérhető nyilvános környezetsablonok kiválasztása

Ha engedélyezi a nyilvános környezeti adattárat egy tesztkörnyezethez, az adattárban lévő összes környezeti sablon alapértelmezés szerint elérhető a tesztkörnyezet felhasználói számára. A kijelölt sablonokhoz való hozzáférést letilthatja. A letiltott sablonok már nem jelennek meg a felhasználók által létrehozható környezetek listájában.

Adott környezeti sablonokhoz való hozzáférés letiltása:

  1. A labor Azure Portál Konfigurációk és szabályzatok>virtuális gép alapjai>nyilvános környezetek lapján törölje a letiltani kívánt környezetek melletti jelölőnégyzetek kijelölését.

  2. Válassza a Mentés lehetőséget.

Képernyőkép arról, hogyan lehet megszüntetni a nyilvános környezeti adattárak kijelölését egy tesztkörnyezetben a felhasználók hozzáférésének letiltásához.

Környezeti felhasználói engedélyek konfigurálása

Alapértelmezés szerint a labor felhasználói az általuk létrehozott környezetekben kapják az olvasó szerepet. Az olvasók nem állíthatják le, nem indíthatják el és nem módosíthatják az olyan környezeti erőforrásokat, mint az SQL-kiszolgálók vagy az adatbázisok. Ahhoz, hogy a laborhasználók szerkeszthessék az erőforrásokat a saját környezetükben, adjuk meg nekik a közreműködő szerepet a környezetük erőforráscsoportjában.

  1. A tesztkörnyezet Azure Portaláttekintési lapján válassza a Konfiguráció és szabályzatok lehetőséget a bal oldali navigációs menü Beállítások területén.

  2. A Konfiguráció és szabályzatok lapon bontsa ki a beállításokat a bal oldali menüben, és válassza a Tesztkörnyezet beállításai lehetőséget.

  3. A Tesztkörnyezet beállításai lap Környezeti hozzáférés területén állítsa be az erőforráscsoport felhasználói jogosultsági beállításait Közreműködőre.

  4. Válassza a Mentés lehetőséget.

Képernyőkép arról, hogyan állíthat be közreműködői szerepkör-engedélyeket a tesztkörnyezet felhasználói számára a DevTest Labsban.

Környezetek létrehozása sablonokból

Ha úgy konfigurálod a laborodat, hogy nyilvános vagy privát sablontárakat használjon, akkor létrehozhatsz egy környezetet egy elérhető ARM sablon kiválasztásával. Kövesse az alábbi lépéseket a környezet sablonból való létrehozásához.

  1. A tesztkörnyezet Azure Portaláttekintési lapján válassza a Saját környezetek lehetőséget a Saját tesztkörnyezet területen a bal oldali navigációs menüben.

  2. A Saját környezetek lapon válassza a Hozzáadás lehetőséget.

  3. Az Alap kiválasztása oldalon válaszd ki Web App with SQL Database-et.

    Képernyőkép, amely az SQL Database-tel rendelkező Web App-ot mutatja, amely az Azure DevTest Labs elérhető környezeti sablonjai közül van kiválasztva.

  4. A Hozzáadás panelen írj be egy Környezet nevet, és konfiguráld a webalkalmazás és SQL adatbázis erőforrásainak egyéb paraméterbeállításait.

    Képernyőkép, amelyen a SQL Database-t tartalmazó Web App kiválasztása és a környezeti beállítások megadása látható az Azure DevTest Labsben.

    • Minden ARM-környezetsablon egyedi paramétereket tartalmaz. Környezet hozzáadásakor meg kell adnia az összes szükséges paraméter értékét piros csillagokkal jelölve.
    • Egy azuredeploy.parameters.json ARM-sablonfájl egyes paraméterértékei üres beállításmezőket hoznak létre, alapértelmezett érték nélkül a Hozzáadás panelen. Ezek az értékek a következők: GEN-UNIQUE, GEN-UNIQUE-[N], GEN-SSH-PUB-KEYés GEN-PASSWORD.
    • Az Azure Key Vault titkait olyan titkosított szövegrészekként használhatja, mint a jelszavak. További információ: Titkos kulcsok tárolása az Azure Key Vaultban.
  5. Válassza a Hozzáadás lehetőséget. A környezet kiépítése azonnal megkezdődik.

A környezet kiépítésének folyamata hosszú időt vehet igénybe. A teljes idő a DevTest Labs által a tesztkörnyezet részeként létrehozott szolgáltatáspéldányok, virtuális gépek és egyéb erőforrások számától függ.

A kiépítés állapotát a Saját környezetek lapon figyelheti. Válassza az eszköztár Frissítés elemét a lapnézet frissítéséhez és az aktuális állapot ellenőrzéséhez. Amíg az üzembe helyezés folyamatban van, a környezet állapota Létrehozás alatt. A kiépítés befejezése után az állapot készre változik.

Képernyőkép a tesztkörnyezet kiépítési állapotának megtekintéséről.

Az üzembe helyezés létrehoz egy új erőforráscsoportot az ARM-sablon által definiált összes környezeti erőforrás kiépítéséhez. Válassza ki a környezetet a Saját környezetek listában az erőforráscsoport és a sablon által létrehozott összes erőforrás megtekintéséhez.

Válassz egy erőforrást a listából, hogy meglásd a tulajdonságokat és az elérhető műveleteket.

Környezet létrehozásának automatizálása

Ha több környezetet kell létrehoznia fejlesztési vagy tesztelési forgatókönyvekhez, az Azure PowerShell vagy az Azure CLI használatával automatizálhatja a környezetek ARM-sablonokból való üzembe helyezését. Az alábbi lépések bemutatják, hogyan automatizálhatja az ARM-környezetsablonok üzembe helyezését az Azure PowerShell-paranccsal New-AzResource .

Az üzembe helyezést az Azure CLI az deployment group create paranccsal is automatizálhatja. További információ: Erőforrások üzembe helyezése ARM-sablonokkal és az Azure CLI-vel.

  1. Tárolja az ARM-környezetsablont egy Git-adattárban , és adja hozzá az adattárat a laborhoz.

  2. Mentse a következő PowerShell-szkriptet a számítógépre deployenv.ps1. Ez a szkript meghívja az ARM-sablont, hogy létrehozza a környezetet a laborban.

    #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. A szkript használatához futtassa a következő parancsot. Frissítse a parancs helyőrzőit a saját laborértékeivel.

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