Delen via


DevTest Labs-omgevingen implementeren met behulp van geneste sjablonen

Een geneste implementatie voert secundaire ARM-sjablonen (Azure Resource Manager) uit vanuit een hoofdsjabloon. In dit artikel ziet u een voorbeeld van het nesten van sjablonen voor het implementeren van een Azure DevTest Labs-omgeving. DevTest Labs-omgevingen bevatten meerdere IaaS-vm's (infrastructure-as-a-service) waarop PaaS-resources (Platform-as-a-Service) zijn geïnstalleerd. U kunt de PaaS-resources en -VM's inrichten met behulp van ARM-sjablonen.

Het opsplitsen van een implementatie in een set doelspecifieke sjablonen biedt voordelen voor testen, hergebruik en leesbaarheid. Zie Gekoppelde en geneste sjablonen gebruiken bij het implementeren van Azure-resources voor algemene informatie over geneste sjablonen, inclusief codevoorbeelden.

Notitie

Azure Deployment Environments (ADE) wordt ten zeerste aanbevolen voor het maken van omgevingen. Met ADE kunnen ontwikkelaars snel app-infrastructuur implementeren met behulp van projectsjablonen, waardoor consistente en veilige omgevingen voor uw ontwikkelteams worden gegarandeerd.

Zie de documentatie over Azure Deployment Environments voor meer informatie over Azure Deployment Environments.

Geneste sjablonen implementeren met Visual Studio

Met de Azure Resource Group-projectsjabloon in Visual Studio kunt u eenvoudig ARM-sjablonen ontwikkelen en fouten opsporen. Wanneer u een geneste sjabloon toevoegt aan het hoofd-azuredeploy.json-sjabloonbestand, voegt Visual Studio de volgende items toe om de sjabloon flexibeler te maken:

  • Een submap met de secundaire sjabloon en parametersbestanden
  • Namen van variabelen in het hoofdsjabloonbestand
  • Twee belangrijke parameters en _artifactsLocation_artifactsLocationSasToken

In DevTest Labs slaat u ARM-sjablonen op in een Git-opslagplaats die u aan het lab koppelt. Wanneer u een van de gekoppelde opslagplaatssjablonen gebruikt om een nieuwe omgeving te maken, kopieert de implementatie de sjabloonbestanden naar een Azure Storage-container in het lab. Wanneer u een geneste sjabloonresource toevoegt aan de opslagplaats en het hoofdsjabloonbestand, identificeert Visual Studio de _artifactsLocation en _artifactsLocationSasToken waarden, kopieert u de submappen naar de opslagcontainer en voegt u het token locatie en Shared Access Signature (SaS) in de parametersbestanden in.

Geneste sjabloonmapstructuur

In het volgende sjabloonvoorbeeld bevat de map Git-opslagplaats een submap, genestetemplates, met de geneste sjabloonbestanden NestOne.json en NestOne.parameters.json. Het azuredeploy.json hoofdsjabloonbestand bouwt de URI voor de secundaire sjablonen met behulp van de locatie van artefacten, de geneste sjabloonmap en de bestandsnaam van geneste sjablonen. De URI voor het parameterbestand is de locatie van artefacten, de geneste sjabloonmap en het geneste sjabloonparametersbestand. U kunt meer geneste sjabloonsubmappen toevoegen aan de primaire map, maar op slechts één niveau van nesten.

In de volgende schermopname ziet u de projectstructuur in Visual Studio:

Schermopname van de geneste sjabloonprojectstructuur in Visual Studio.

Voorbeeld van geneste implementatie

In het volgende voorbeeld ziet u het hoofdbestand azuredeploy.json ARM-sjabloon voor de geneste implementatie:


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

Volgende stappen