Distribuera DevTest Labs-miljöer med hjälp av kapslade mallar

En kapslad distribution kör sekundära Arm-mallar (Azure Resource Manager) inifrån en huvudmall. Den här artikeln visar ett exempel på kapslingsmallar för att distribuera en Azure DevTest Labs miljö. DevTest Labs-miljöer innehåller flera virtuella IaaS-datorer (infrastruktur som en tjänst) med PaaS-resurser (plattform som en tjänst) installerade. Du kan etablera PaaS-resurser och virtuella datorer med hjälp av ARM-mallar.

Att dela upp en distribution i en uppsättning målinriktade, syftesspecifika mallar ger fördelar med testning, återanvändning och läsbarhet. Allmän information om kapslade mallar, inklusive kodexempel, finns i Använda länkade och kapslade mallar när du distribuerar Azure-resurser.

Distribuera kapslade mallar med Visual Studio

Azure Resource Group-projektmallen i Visual Studio gör det enkelt att utveckla och felsöka ARM-mallar. När du lägger till en kapslad mall i huvudmallfilen azuredeploy.json lägger Visual Studio till följande objekt för att göra mallen mer flexibel:

  • En undermapp med den sekundära mallen och parameterfilerna
  • Variabelnamn i huvudmallfilen
  • Två nyckelparametrar, _artifactsLocation och _artifactsLocationSasToken

I DevTest Labs lagrar du ARM-mallar på en Git-lagringsplats som du länkar till labbet. När du använder en av de länkade lagringsplatsmallarna för att skapa en ny miljö kopierar distributionen mallfilerna till en Azure Storage-container i labbet. När du lägger till en kapslad mallresurs i lagringsplatsen och huvudmallfilen identifierar _artifactsLocation Visual Studio värdena och _artifactsLocationSasToken , kopierar undermapparna till lagringscontainern och infogar platsen och SaS-token (Signatur för delad åtkomst) i parameterfilerna.

Mappstruktur för kapslade mallar

I följande mallexempel har Mappen Git-lagringsplats en undermapp, nestedtemplates, med de kapslade mallfilerna NestOne.json och NestOne.parameters.json. Huvudmallfilen azuredeploy.json skapar URI:n för de sekundära mallarna med hjälp av artefaktplatsen, den kapslade mallmappen och det kapslade mallfilnamnet. URI:n för parameterfilen är artefaktplatsen, den kapslade mallmappen och filen med kapslade mallparametrar. Du kan lägga till fler kapslade mallundermappar i den primära mappen, men bara på en kapslingsnivå.

Följande skärmbild visar projektstrukturen i Visual Studio:

Skärmbild som visar den kapslade mallprojektstrukturen i Visual Studio.

Exempel på kapslad distribution

I följande exempel visas arm-mallfilen azuredeploy.json för den kapslade distributionen:


"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "_artifactsLocation": {
        "type": "string"
    },
    "_artifactsLocationSasToken": {
        "type": "securestring"
    }},
"variables": {
    "NestOneTemplateFolder": "nestedtemplates",
    "NestOneTemplateFileName": "NestOne.json",
    "NestOneTemplateParametersFileName": "NestOne.parameters.json"},
    "resources": [
    {
        "name": "NestOne",
        "type": "Microsoft.Resources/deployments",
        "apiVersion": "2016-09-01",
        "dependsOn": [ ],
        "properties": {
            "mode": "Incremental",
            "templateLink": {
                "uri": "[concat(parameters('_artifactsLocation'), '/', variables('NestOneTemplateFolder'), '/', variables('NestOneTemplateFileName'), parameters('_artifactsLocationSasToken'))]",
                "contentVersion": "1.0.0.0"
            },
            "parametersLink": {
                "uri": "[concat(parameters('_artifactsLocation'), '/', variables('NestOneTemplateFolder'), '/', variables('NestOneTemplateParametersFileName'), parameters('_artifactsLocationSasToken'))]",
                "contentVersion": "1.0.0.0"
            }
        }    
    }],
"outputs": {}

Nästa steg