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:
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
- Zie ARM-sjablonen gebruiken om DevTest Labs-omgevingen te maken voor meer informatie over DevTest Labs-omgevingen.
- Zie Het maken en implementeren van Azure-resourcegroepen in Visual Studio via Visual Studio voor meer informatie over het gebruik van de Azure Resource Group-projectsjabloon, inclusief codevoorbeelden.