Distribuera kapslade Azure Resource Manager-mallar för testmiljöer

Med en kapslad distribution kan du köra Azure Resource Manager mallar inifrån en Resource Manager mall. Du kan delar upp distributionen i en uppsättning mål- och specifika mallar. En kapslad distribution ger fördelar med testning, återanvändning och läsbarhet. Artikeln Använda länkade mallar när du distribuerar Azure-resurser ger en bra översikt över den här lösningen med flera kodexempel. Den här artikeln innehåller ett exempel som är specifikt för Azure DevTest Labs.

Nyckelparametrar

Du kan skapa en egen Resource Manager från grunden, men vi rekommenderar att du använder Azure-resursgruppsprojektet i Visual Studio. Det här projektet gör det enkelt att utveckla och felsöka mallar. När du lägger till en kapslad distributionsresurs i azuredeploy.json Visual Studio flera objekt för att göra mallen mer flexibel. Dessa objekt är:

  • Undermappen med den sekundära mallen och parameterfilen
  • Variabelnamn i huvudmallfilen
  • Två parametrar för lagringsplatsen för de nya filerna. De _artifactsLocation och _artifactsLocationSasToken är de nyckelparametrar som används i DevTest Labs.

Om du inte är bekant med hur DevTest Labs fungerar med miljöer kan du gå till Skapa miljöer med flera virtuella datorer och PaaS-resurser med Azure Resource Manager mallar. Mallarna lagras på lagringsplatsen som är länkad till labbet i DevTest Labs. När du skapar en ny miljö med dessa mallar flyttas filerna till en Azure Storage container i labbet. För att hitta och kopiera de kapslade filerna identifierar DevTest Labs parametrarna _artifactsLocation och _artifactsLocationSasToken och kopierar undermapparna upp till lagringscontainern. Sedan infogar DevTest Labs automatiskt platsen och SaS-token (signatur för delad åtkomst) i parametrar.

Exempel på kapslad distribution

Här är ett enkelt exempel på en kapslad distribution:


"$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": {}

Mappen på lagringsplatsen som innehåller den här mallen har en undermapp med filerna nestedtemplates NestOne.json och NestOne.parameters.json. I azuredeploy.json skapas URI för mallen med artefaktplatsen, den kapslade mallmappen och det kapslade mallfilnamnet. På samma sätt skapas URI:n för parametrarna med artefaktplatsen, den kapslade mallmappen och parameterfilen för den kapslade mallen.

Här är bilden av samma projektstruktur i Visual Studio:

Skärmbild av projektstrukturen i Visual Studio.

Du kan lägga till fler mappar i den primära mappen, men inte djupare än en enda nivå.

Nästa steg

Mer information om miljöer finns i följande artiklar: