Compartir vía


Plantillas anidadas en entornos de DevTest Labs

Un entorno de Azure DevTest Labs consta de varias máquinas virtuales de infraestructura como servicio (IaaS) con recursos de plataforma como servicio (PaaS). Puede aprovisionar e implementar entornos de DevTest Labs mediante plantillas de Azure Resource Manager (ARM).

Para implementar soluciones complejas como entornos, puede dividir una plantilla en plantillas secundarias e implementar estas plantillas a través de una plantilla principal. En este artículo se describe el uso de plantillas anidadas para implementar un entorno de DevTest Labs. El uso de un conjunto de plantillas específicas de destino para implementar un entorno promueve las pruebas, la reutilización y la legibilidad.

Para obtener información general sobre las plantillas anidadas, incluidos los ejemplos de código, consulte Uso de plantillas vinculadas y anidadas al implementar recursos de Azure.

Nota:

Si necesita administrar los recursos, las directivas y la configuración de seguridad de PaaS de toda la empresa, o la integración de CI/CD en las fases de implementación y las aplicaciones, considere la posibilidad de usar entornos de implementación de Azure (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, consulte la documentación de Entornos de implementación de Azure.

Implementación de plantillas anidadas

En DevTest Labs, puede almacenar plantillas de ARM en un repositorio de Git vinculado a un laboratorio. Cuando se usan plantillas de repositorio para crear un entorno, DevTest Labs copia todos los archivos de plantilla y artefacto, incluidos los archivos de plantilla anidados, en el contenedor de Azure Storage del laboratorio.

El archivo de plantilla principal azuredeploy.json para una implementación de plantilla anidada utiliza objetos Microsoft.Resources/deployments para invocar plantillas secundarias vinculadas. Proporcione valores de URI para las plantillas vinculadas y genere un token de firma de acceso compartido (SaS) para la implementación.

La implementación usa Azure PowerShell New-AzResourceGroupDeployment o la CLI az deployment group createde Azure , especificando el URI de plantilla principal y el token de SaS. Para obtener más información, consulte Tutorial: Implementación de una plantilla vinculada.

Ejemplo de plantilla anidada

En el siguiente ejemplo, el archivo de plantilla principal azuredeploy.json muestra el código de una implementación anidada. El archivo de plantilla principal define vínculos a la plantilla anidada.

El URI del enlace de la plantilla secundaria une la ubicación de los artefactos, la carpeta de la plantilla anidada, el nombre del archivo de la plantilla anidada y la ubicación del token de la firma de acceso compartido (SaS). El URI del archivo de parámetros secundarios usa la ubicación de artefactos, la carpeta de plantillas anidadas, el nombre de archivo de parámetros anidados y la ubicación del token SAS de artefactos.


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