Dela via


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 (Infrastructure-as-a-Service) 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.

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.

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 mallfilen main 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 lagringsplatsens mallar 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 plats- och SaS-token (Signatur för delad åtkomst) i parameterfilerna.

Mappstruktur för kapslade mallar

I följande mallexempel har Git-lagringsplatsen en undermapp, nestedtemplates, med de kapslade mallfilerna NestOne.json och NestOne.parameters.json. Den azuredeploy.json huvudmallfilen 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 den kapslade mallparametrarfilen. 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 huvudfilen azuredeploy.json ARM-mall 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