Wdróż zagnieżdżone szablony Azure Resource Manager dla środowisk testowychDeploy nested Azure Resource Manager templates for testing environments

Wdrożenie zagnieżdżone umożliwia wykonywanie innych szablonów Azure Resource Manager z poziomu szablonu Menedżer zasobów głównego.A nested deployment allows you to execute other Azure Resource Manager templates from within a main Resource Manager template. Pozwala to na rozmieszczenie wdrożenia w zestaw szablonów przeznaczonych dla konkretnych celów.It enables you to decompose your deployment into a set of targeted and purpose-specific templates. Zapewnia ona korzyści z testowania, ponownego użycia i czytelności.It provides benefits in terms of testing, reuse, and readability. W przypadku wdrażania zasobów platformy Azure za pomocą połączonych szablonów znajduje się dobry przegląd tego rozwiązania z kilkoma przykładami kodu.The article Using linked templates when deploying Azure resources provides a good overview of this solution with several code samples. W tym artykule przedstawiono przykład, który jest specyficzny dla Azure DevTest Labs.This article provides an example that's specific to Azure DevTest Labs.

Parametry kluczaKey parameters

Chociaż możesz utworzyć własny szablon Menedżer zasobów od podstaw, zalecamy użycie projektu grupy zasobów platformy Azure w programie Visual Studio, co ułatwia tworzenie i debugowanie szablonów.While you can create your own Resource Manager template from scratch, we recommend that you use the Azure Resource Group project in Visual Studio, which makes it easy to develop and debug templates. Po dodaniu zagnieżdżonego zasobu wdrożenia do azuredeploy.jsw programie Visual Studio dodaje kilka elementów, aby uczynić szablon bardziej elastycznym.When you add a nested deployment resource to azuredeploy.json, Visual Studio adds several items to make the template more flexible. Te elementy obejmują podfolder z szablonem pomocniczym i plikiem parametrów, nazwami zmiennych w głównym pliku szablonu i dwa parametry lokalizacji przechowywania dla nowych plików.These items include the subfolder with the secondary template and parameters file, variable names within the main template file, and two parameters for the storage location for the new files. _ArtifactsLocation i _artifactsLocationSasToken są kluczowymi parametrami, z których korzysta DevTest Labs.The _artifactsLocation and _artifactsLocationSasToken are the key parameters that the DevTest Labs uses.

Jeśli nie wiesz, jak współpracuje DevTest Labs z środowiskami, zobacz Tworzenie środowisk wielu maszyn wirtualnych i zasobów PaaS przy użyciu szablonów Azure Resource Manager.If you aren't familiar with how the DevTest Labs works with environments, see Create multi-VM environments and PaaS resources with Azure Resource Manager templates. Szablony są przechowywane w repozytorium połączonym z laboratorium w DevTest Labs.Your templates are stored in the repository linked to the lab in DevTest Labs. Po utworzeniu nowego środowiska z tymi szablonami pliki są przenoszone do kontenera usługi Azure Storage w laboratorium.When you create a new environment with those templates, the files are moved into an Azure Storage container in the lab. Aby można było identyfikować i kopiować pliki zagnieżdżone, DevTest Labs identyfikuje parametry _artifactsLocation i _artifactsLocationSasToken i kopiuje podfoldery do kontenera magazynu.To be able to identify and copy the nested files, DevTest Labs identifies the _artifactsLocation and _artifactsLocationSasToken parameters and copies the subfolders up to the storage container. Następnie automatycznie wstawia do parametrów lokalizację i token sygnatury dostępu współdzielonego (SaS).Then, it automatically inserts the location and Shared Access Signature (SaS) token into parameters.

Przykład zagnieżdżonego wdrożeniaNested deployment example

Oto prosty przykład wdrożenia zagnieżdżonego:Here is a simple example of a nested deployment:


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

Folder w repozytorium zawierającym ten szablon ma podfolder nestedtemplates z plikami NestOne.json i NestOne.parameters.json.The folder in the repository containing this template has a subfolder nestedtemplates with the files NestOne.json and NestOne.parameters.json. W azuredeploy.jsna identyfikator URI dla szablonu jest tworzony przy użyciu lokalizacji artefaktów, zagnieżdżonego folderu szablonów, zagnieżdżonej nazwy pliku szablonu.In the azuredeploy.json, URI for the template is built using the artifacts location, nested template folder, nested template file name. Podobnie identyfikatory URI parametrów są kompilowane przy użyciu lokalizacji artefaktów, zagnieżdżonego folderu szablonów i pliku parametrów dla szablonu zagnieżdżonego.Similarly, URI for the parameters is built using the artifacts location, nested template folder, and parameter file for the nested template.

Poniżej znajduje się obraz tej samej struktury projektu w programie Visual Studio:Here is the image of the same project structure in Visual Studio:

Struktura projektu w programie Visual Studio

Możesz dodać dodatkowe foldery w folderze podstawowym, ale nie są one bardziej szczegółowe niż jeden poziom.You can add additional folders in the primary folder but not any deeper than a single level.

Następne krokiNext steps

Szczegółowe informacje o środowiskach można znaleźć w następujących artykułach:See the following articles for details about environments: