Implantar ambientes do DevTest Labs usando modelos aninhados
Uma implantação aninhada executa modelos do ARM (Azure Resource Manager) secundários em um modelo principal. Este artigo mostra um exemplo de aninhamento de modelos para implantar um ambiente do Azure DevTest Labs. Os ambientes do DevTest Labs contêm várias VMs (máquinas virtuais) de IaaS (infraestrutura como serviço) com recursos de PaaS (plataforma como serviço) instalados. Você pode provisionar os recursos de PaaS e as VMs usando modelos do ARM.
A decomposição de uma implantação em um conjunto de modelos direcionados e de uso específico oferece benefícios de testes, reutilização e legibilidade. Para obter informações gerais sobre os modelos aninhados, incluindo exemplos de código, confira Como usar modelos vinculados e aninhados ao implantar recursos do Azure.
Observação
O ADE (Ambientes de Implantação do Azure) é altamente recomendado para criar ambientes. O ADE capacita os desenvolvedores a implantar rapidamente a infraestrutura do aplicativo usando modelos baseados em projeto, garantindo ambientes consistentes e seguros para suas equipes de desenvolvimento.
Para saber mais sobre os Ambientes de Implantação do Azure, consulte a documentação dos Ambientes de Implantação do Azure.
Implantar modelos aninhados com o Visual Studio
O modelo de projeto do grupo de recursos do Azure no Visual Studio facilita o desenvolvimento e a depuração de modelos do ARM. Quando você adiciona um modelo aninhado ao arquivo de modelo principal azuredeploy.json, o Visual Studio adiciona os seguintes itens para tornar o modelo mais flexível:
- A subpasta com o modelo secundário e o arquivo de parâmetros
- Nomes de variáveis no arquivo de modelo principal
- Dois parâmetros principais:
_artifactsLocation
e_artifactsLocationSasToken
No DevTest Labs, você armazena os modelos do ARM em um repositório Git vinculado ao laboratório. Quando você usa um dos modelos de repositório vinculado para criar um ambiente, a implantação copia os arquivos de modelo em um contêiner do Armazenamento do Azure no laboratório. Quando você adiciona um recurso de modelo aninhado ao repositório e ao arquivo de modelo principal, o Visual Studio identifica os valores _artifactsLocation
e _artifactsLocationSasToken
, copia as subpastas para o contêiner de armazenamento e insere a localização e o token SAS (Assinatura de Acesso Compartilhado) nos arquivos de parâmetros.
Estrutura de pasta de modelo aninhado
No exemplo de modelo a seguir, a pasta do repositório Git tem uma subpasta, nestedtemplates, com os arquivos de modelo aninhado NestOne.json e NestOne.parameters.json. O arquivo de modelo principal azuredeploy.json cria o URI para os modelos secundários usando a localização de artefatos, a pasta de modelo aninhado e o nome de arquivo de modelo aninhado. O URI para o arquivo de parâmetros é a localização dos artefatos, a pasta de modelo aninhado e o arquivo de parâmetros de modelo aninhado. Você pode adicionar mais subpastas de modelo aninhado à pasta principal, mas apenas em um nível de aninhamento.
A seguinte captura de tela mostra a estrutura do projeto no Visual Studio:
Exemplo de implantação aninhada
O seguinte exemplo mostra o arquivo principal de modelo do ARM azuredeploy.json para a implantação aninhada:
"$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": {}
Próximas etapas
- Para saber mais sobre os ambientes do DevTest Labs, confira Usar modelos do ARM para criar ambientes do DevTest Labs.
- Para obter mais informações sobre como usar o modelo de projeto do grupo de recursos do Azure no Visual Studio, incluindo exemplos de código, confira Como criar e implantar grupos de recursos do Azure por meio do Visual Studio.