Implementar modelos aninhados do Gestor de Recursos Azure para ambientes de testeDeploy nested Azure Resource Manager templates for testing environments

Uma implementação aninhada permite-lhe executar outros modelos do Gestor de Recursos Azure dentro de um modelo principal de Gestor de Recursos.A nested deployment allows you to execute other Azure Resource Manager templates from within a main Resource Manager template. Permite-lhe decompor a sua implantação num conjunto de modelos específicos e direcionados.It enables you to decompose your deployment into a set of targeted and purpose-specific templates. Proporciona benefícios em termos de teste, reutilização e legibilidade.It provides benefits in terms of testing, reuse, and readability. O artigo Utilizando modelos ligados ao implementar recursos Azure fornece uma boa visão geral desta solução com várias amostras de código.The article Using linked templates when deploying Azure resources provides a good overview of this solution with several code samples. Este artigo fornece um exemplo específico da Azure DevTest Labs.This article provides an example that's specific to Azure DevTest Labs.

Parâmetros-chaveKey parameters

Embora possa criar o seu próprio modelo de Gestor de Recursos de raiz, recomendamos que utilize o projeto Azure Resource Group em Visual Studio, o que facilita o desenvolvimento e depuração de modelos.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. Quando adiciona um recurso de implementação aninhado para azuredeploy.jsligado, o Visual Studio adiciona vários itens para tornar o modelo mais flexível.When you add a nested deployment resource to azuredeploy.json, Visual Studio adds several items to make the template more flexible. Estes itens incluem a sub-dobragem com o modelo secundário e o ficheiro de parâmetros, nomes variáveis dentro do ficheiro do modelo principal e dois parâmetros para a localização de armazenamento para os novos ficheiros.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. Os _artifactsLocation e _artifactsLocationSasToken são os parâmetros-chave que os DevTest Labs usam.The _artifactsLocation and _artifactsLocationSasToken are the key parameters that the DevTest Labs uses.

Se não está familiarizado com o funcionamento dos Laboratórios DevTest com ambientes, consulte criar ambientes multi-VM e recursos PaaS com modelos de Gestor de Recursos Azure.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. Os seus modelos estão armazenados no repositório ligado ao laboratório em DevTest Labs.Your templates are stored in the repository linked to the lab in DevTest Labs. Quando cria um novo ambiente com esses modelos, os ficheiros são transferidos para um recipiente de armazenamento Azure no laboratório.When you create a new environment with those templates, the files are moved into an Azure Storage container in the lab. Para poder identificar e copiar os ficheiros aninhados, a DevTest Labs identifica os parâmetros _artifactsLocation e _artifactsLocationSasToken e copia as sub-dobradinhas até ao recipiente de armazenamento.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. Em seguida, insere automaticamente a localização e o token assinatura de acesso partilhado (SaS) em parâmetros.Then, it automatically inserts the location and Shared Access Signature (SaS) token into parameters.

Exemplo de implantação aninhadaNested deployment example

Aqui está um exemplo simples de uma implantação aninhada: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": {}

A pasta do repositório que contém este modelo tem uma sub-dobragem nestedtemplates com os ficheiros NestOne.js e NestOne.parameters.js.The folder in the repository containing this template has a subfolder nestedtemplates with the files NestOne.json and NestOne.parameters.json. No azuredeploy.jsem, URI para o modelo é construído usando a localização dos artefactos, pasta de modelo aninhado, nome de arquivo de modelo aninhado.In the azuredeploy.json, URI for the template is built using the artifacts location, nested template folder, nested template file name. Da mesma forma, URI para os parâmetros é construído usando a localização dos artefactos, pasta de modelo aninhado e arquivo de parâmetros para o modelo aninhado.Similarly, URI for the parameters is built using the artifacts location, nested template folder, and parameter file for the nested template.

Aqui está a imagem da mesma estrutura do projeto no Visual Studio:Here is the image of the same project structure in Visual Studio:

Estrutura do projeto no Estúdio Visual

Pode adicionar pastas adicionais na pasta primária, mas não mais profundas do que um único nível.You can add additional folders in the primary folder but not any deeper than a single level.

Passos seguintesNext steps

Consulte os seguintes artigos para mais detalhes sobre ambientes:See the following articles for details about environments: