Bereitstellen von DevTest Labs-Umgebungen mithilfe geschachtelter Vorlagen
Eine geschachtelte Bereitstellung führt sekundäre ARM-Vorlagen (Azure Resource Manager) aus einer Hauptvorlage aus. Dieser Artikel zeigt ein Beispiel für das Schachteln von Vorlagen zum Bereitstellen einer Azure DevTest Labs-Umgebung. DevTest Labs-Umgebungen enthalten mehrere IaaS-VMs (Infrastructure-as-a-Service), auf denen PaaS-Ressourcen (Platform-as-a-Service) installiert sind. Sie können die PaaS-Ressourcen und VMs mithilfe von ARM-Vorlagen bereitstellen.
Das Aufteilen einer Bereitstellung in eine Reihe von gezielten, zweckspezifischen Vorlagen bietet Vorteile beim Testen, Wiederverwenden und bezüglich der Lesbarkeit. Allgemeine Informationen zu geschachtelten Vorlagen, einschließlich Codebeispielen, finden Sie unter Verwenden von verknüpften und geschachtelten Vorlagen beim Bereitstellen von Azure-Ressourcen.
Hinweis
Azure Deployment Environments (ADE) wird für die Erstellung von Umgebungen dringend empfohlen. ADE ermöglicht Entwicklern die schnelle Bereitstellung der App-Infrastruktur mithilfe von projektbasierten Vorlagen und sorgt für konsistente und sichere Umgebungen für Ihre Entwicklungsteams.
Weitere Informationen zu Azure Deployment Environments finden Sie in der Dokumentation zu Azure Deployment Environments.
Bereitstellen von geschachtelten Vorlagen mit Visual Studio
Die Projektvorlage „Azure-Ressourcengruppe“ in Visual Studio erleichtert das Entwickeln und Debuggen von ARM-Vorlagen. Wenn Sie der Hauptvorlagendatei azuredeploy.json eine geschachtelte Vorlage hinzufügen, fügt Visual Studio die folgenden Elemente hinzu, um die Vorlage flexibler zu gestalten:
- Einen Unterordner mit der sekundären Vorlage und Parameterdateien
- Variablennamen in der Hauptvorlagendatei
- Zwei Schlüsselparameter:
_artifactsLocation
und_artifactsLocationSasToken
In DevTest Labs speichern Sie ARM-Vorlagen in einem Git-Repository, das Sie mit dem Lab verknüpfen. Wenn Sie eine der verknüpften Repositoryvorlagen verwenden, um eine neue Umgebung zu erstellen, kopiert die Bereitstellung die Vorlagendateien in einen Azure Storage-Container im Lab. Wenn Sie dem Repository und der Hauptvorlagendatei eine geschachtelte Vorlagenressource hinzufügen, identifiziert Visual Studio die _artifactsLocation
Werte und _artifactsLocationSasToken
, kopiert die Unterordner in den Speichercontainer und fügt den Speicherort und das SAS-Token (Shared Access Signature) in die Parameterdateien ein.
Struktur des Ordners für geschachtelte Vorlagen
Im folgenden Vorlagenbeispiel enthält der Git-Repositoryordner einen Unterordner (nestedtemplates) mit den geschachtelten Vorlagendateien NestOne.json und NestOne.parameters.json. Die Hauptvorlagendatei azuredeploy.json erstellt den URI für die sekundären Vorlagen mithilfe des Artefaktspeicherorts, des Ordners für geschachtelte Vorlagen und des Dateinamens der geschachtelten Vorlage. Der URI für die Parameterdatei besteht aus dem Artefaktspeicherort, dem Ordner für geschachtelte Vorlagen und der Parameterdatei für die geschachtelte Vorlage. Sie können dem primären Ordner weitere Unterordner für geschachtelte Vorlagen hinzufügen, jedoch nur auf einer Schachtelungsebene.
Der folgende Screenshot zeigt die Projektstruktur in Visual Studio:
Beispiel für die geschachtelte Bereitstellung
Das folgende Beispiel zeigt die ARM-Hauptvorlagendatei azuredeploy.json für die geschachtelte Bereitstellung:
"$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ächste Schritte
- Weitere Informationen zu DevTest Labs-Umgebungen finden Sie unter Verwenden von ARM-Vorlagen zum Erstellen von DevTest Labs-Umgebungen.
- Weitere Informationen zur Verwendung der Visual Studio-Projektvorlage „Azure-Ressourcengruppe“ (einschließlich Codebeispielen) finden Sie unter Erstellen und Bereitstellen von Azure-Ressourcengruppen über Visual Studio.