Implementación de entornos de DevTest Labs mediante plantillas anidadas
Una implementación anidada ejecuta plantillas de Azure Resource Manager (ARM) secundarias desde una plantilla principal. En este artículo se muestra un ejemplo de anidamiento de plantillas para implementar un entorno de Azure DevTest Labs. Los entornos de DevTest Labs contienen varias máquinas virtuales (VM) de infraestructura como servicio (IaaS) con recursos de plataforma como servicio (PaaS) instalados. Puede aprovisionar los recursos y las máquinas virtuales de PaaS mediante plantillas de ARM.
Descomponer una implementación en un conjunto de plantillas con un propósito específico proporciona ventajas de prueba, reutilización y legibilidad. Para obtener información general sobre las plantillas anidadas, con ejemplos de código, consulte Uso de plantillas vinculadas y anidadas al implementar recursos de Azure.
Nota:
Se recomienda encarecidamente Azure Deployment Environments (ADE) para crear entornos. ADE permite a los desarrolladores implementar rápidamente la infraestructura de aplicaciones mediante plantillas basadas en proyectos, lo que garantiza entornos coherentes y seguros para los equipos de desarrollo.
Para más información sobre Azure Deployment Environments, vea Documentación de Azure Deployment Environments.
Implementación de plantillas anidadas con Visual Studio
La plantilla de proyecto del grupo de recursos de Azure de Visual Studio facilita el desarrollo y la depuración de plantillas de ARM. Al agregar una plantilla anidada al archivo de plantilla azuredeploy.json principal, Visual Studio agrega los siguientes elementos para que la plantilla sea más flexible:
- Una subcarpeta con la plantilla secundaria y archivos de parámetros
- Nombres de variables en el archivo de plantilla principal
- Dos parámetros clave,
_artifactsLocation
y_artifactsLocationSasToken
En DevTest Labs, se almacenan las plantillas de ARM en un repositorio de Git que se vincula al laboratorio. Cuando se usa una de las plantillas de repositorio vinculado para crear un nuevo entorno, la implementación copia los archivos de la plantilla en un contenedor de Azure Storage en el laboratorio. Al agregar un recurso de plantilla anidada al repositorio y al archivo de plantilla principal, Visual Studio identifica los valores _artifactsLocation
y _artifactsLocationSasToken
, copia las subcarpetas en el contenedor de almacenamiento e inserta la ubicación y el token de firma de acceso compartido (SaS) en los archivos de parámetros.
Estructura de carpetas de plantillas anidadas
En el ejemplo de plantilla siguiente, la carpeta del repositorio de Git tiene una subcarpeta nestedtemplates con los archivos de la plantilla anidada NestOne.json y NestOne.parameters.json. El archivo de plantilla principal azuredeploy.json compila el URI de las plantillas secundarias mediante la ubicación de los artefactos, la carpeta de plantillas anidadas y el nombre de archivo de la plantilla anidada. El URI del archivo de parámetros es la ubicación de los artefactos, la carpeta de plantillas anidadas y el archivo de parámetros de plantilla anidada. Puede agregar más subcarpetas de plantilla anidadas a la carpeta principal, pero solo en un nivel de anidamiento.
En la captura de pantalla siguiente se muestra la estructura del proyecto en Visual Studio:
Ejemplo de implementación anidada
En el ejemplo siguiente se muestra el archivo de plantilla de ARM azuredeploy.json principal para la implementación anidada:
"$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": {}
Pasos siguientes
- Para más información sobre los entornos de DevTest Labs, consulte Uso de plantillas de ARM para crear entornos de DevTest Labs.
- Para más información sobre el uso de la plantilla de proyecto del grupo de recursos de Azure de Visual Studio, con ejemplos de código, consulte Creación e implementación de grupos de recursos de Azure a través de Visual Studio.