Implantar ambientes do DevTest Labs usando modelos aninhados
Uma implantação aninhada executa modelos secundários do Azure Resource Manager (ARM) de dentro de um modelo principal. Este artigo mostra um exemplo de modelos de aninhamento para implantar um ambiente do Azure DevTest Labs. Os ambientes do DevTest Labs contêm várias máquinas virtuais (VMs) de infraestrutura como serviço (IaaS) com recursos de plataforma como serviço (PaaS) instalados. Você pode provisionar os recursos de PaaS e VMs usando modelos ARM.
Decompor uma implantação em um conjunto de modelos direcionados e específicos para fins fornece benefícios de teste, reutilização e legibilidade. Para obter informações gerais sobre modelos aninhados, incluindo exemplos de código, consulte Usando modelos vinculados e aninhados ao implantar recursos do Azure.
Nota
Os Ambientes de Implantação do Azure (ADE) são altamente recomendados para a criação de ambientes. O ADE permite que os desenvolvedores implantem rapidamente a infraestrutura de aplicativos usando modelos baseados em projetos, 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 ARM. Quando você adiciona um modelo aninhado ao arquivo de modelo de azuredeploy.json principal, o Visual Studio adiciona os seguintes itens para tornar o modelo mais flexível:
- Uma subpasta com o modelo secundário e arquivos de parâmetros
- Nomes de variáveis no arquivo de modelo principal
- Dois parâmetros principais,
_artifactsLocation
e_artifactsLocationSasToken
No DevTest Labs, você armazena modelos ARM em um repositório Git vinculado ao laboratório. Quando você usa um dos modelos de repositório vinculado para criar um novo ambiente, a implantação copia os arquivos de modelo em um contêiner de 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 _artifactsLocation
valores e _artifactsLocationSasToken
, copia as subpastas para o contêiner de armazenamento e insere o local e o token SaS (Assinatura de Acesso Compartilhado) nos arquivos de parâmetros.
Estrutura de pastas de modelo aninhado
No exemplo de modelo a seguir, a pasta do repositório Git tem uma subpasta, nestedtemplates, com os arquivos de modelo aninhados NestOne.json e NestOne.parameters.json. O arquivo de modelo principal azuredeploy.json cria o URI para os modelos secundários usando o local dos artefatos, a pasta de modelo aninhada e o nome do arquivo de modelo aninhado. O URI do arquivo de parâmetros é o local dos artefatos, a pasta de modelo aninhada e o arquivo de parâmetros de modelo aninhado. Você pode adicionar mais subpastas de modelo aninhadas à pasta primária, mas em apenas um nível de aninhamento.
A captura de tela a seguir mostra a estrutura do projeto no Visual Studio:
Exemplo de implantação aninhada
O exemplo a seguir mostra o arquivo de modelo ARM de azuredeploy.json principal 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óximos passos
- Para obter mais informações sobre ambientes DevTest Labs, consulte Usar modelos ARM para criar ambientes DevTest Labs.
- Para obter mais informações sobre como usar o modelo de projeto Grupo de Recursos do Azure do Visual Studio, incluindo exemplos de código, consulte Criando e implantando grupos de recursos do Azure por meio do Visual Studio.