Freigeben über


Geschachtelte Vorlagen in DevTest Labs-Umgebungen

Eine Azure DevTest Labs-Umgebung besteht aus mehreren virtuellen IaaS-Computern (Infrastructure-as-a-Service) mit installierten PaaS-Ressourcen (Platform-as-a-Service). Sie können DevTest Labs-Umgebungen mithilfe von Azure Resource Manager (ARM)-Vorlagen bereitstellen und implementieren.

Um komplexe Lösungen wie Umgebungen bereitzustellen, können Sie eine Vorlage in sekundäre Vorlagen unterteilen und diese Vorlagen über eine Hauptvorlage bereitstellen. In diesem Artikel wird die Verwendung geschachtelter Vorlagen zum Bereitstellen einer DevTest Labs-Umgebung beschrieben. Die Verwendung einer Gruppe gezielter, zweckspezifischer Vorlagen zur Bereitstellung einer Umgebung fördert Tests, Wiederverwendung und Lesbarkeit.

Für allgemeine Informationen über geschachtelte Vorlagen, einschließlich Codebeispielen, siehe Verwenden verknüpfter und geschachtelter Vorlagen bei der Bereitstellung von Azure-Ressourcen.

Hinweis

Wenn Sie unternehmensweite PaaS-Ressourcen, Richtlinien und Sicherheitseinstellungen oder CI/CD-Integration über Bereitstellungsphasen und Anwendungen hinweg verwalten müssen, sollten Sie die Verwendung von Azure Deployment Environments (ADE) zum Erstellen von Umgebungen in Betracht ziehen. Mit ADE können Entwickler die App-Infrastruktur schnell mithilfe von projektbasierten Vorlagen bereitstellen und so konsistente und sichere Umgebungen für Ihre Entwicklungsteams sicherstellen. Weitere Informationen finden Sie in der Dokumentation zu Azure-Bereitstellungsumgebungen.

Bereitstellung geschachtelter Vorlagen

In DevTest Labs können Sie ARM-Vorlagen in einem Git-Repository speichern, das mit einem Labor verknüpft ist. Wenn Sie Repositoryvorlagen zum Erstellen einer Umgebung verwenden, kopiert DevTest Labs alle Vorlagen- und Artefaktdateien, einschließlich geschachtelter Vorlagendateien, in den Azure Storage-Container des Labors.

Die Hauptvorlagendatei azuredeploy.json für eine verschachtelte Vorlagenbereitstellung verwendet Microsoft.Resources/deployments Objekte, um verknüpfte sekundäre Vorlagen aufzurufen. Sie stellen URI-Werte für die verknüpften Vorlagen bereit und generieren ein SaS-Token (Shared Access Signature) für die Bereitstellung.

Die Bereitstellung erfolgt mit Azure PowerShell New-AzResourceGroupDeployment oder Azure CLI az deployment group create, indem der Hauptvorlagen-URI und das SaS-Token angegeben werden. Weitere Informationen finden Sie im Lernprogramm: Bereitstellen einer verknüpften Vorlage.

Beispiel für geschachtelte Vorlagen

Das folgende Beispiel azuredeploy.json Hauptvorlagendatei zeigt den Code für eine geschachtelte Bereitstellung. Die Hauptvorlagendatei definiert Verknüpfungen mit der geschachtelten Vorlage.

Der Link-URI für die sekundäre Vorlage verbindet den Speicherort der Artefakte, den Ordner für die untergeordneten Vorlagen, den Dateinamen der untergeordneten Vorlage und den Speicherort des SaS-Tokens (Shared Access Signature). Der URI für die sekundäre Parameterdatei verwendet den Artefaktspeicherort, den geschachtelten Vorlagenordner, den Dateinamen des geschachtelten Parameters und den Speicherort des SaS-Tokens.


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