Condividi tramite


Distribuire ambienti DevTest Labs usando modelli annidati

Una distribuzione annidata esegue modelli di Azure Resource Manager (ARM) secondari dall'interno di un modello principale. Questo articolo illustra un esempio di annidamento dei modelli per distribuire un ambiente Azure DevTest Labs. Gli ambienti DevTest Labs contengono più macchine virtuali IaaS (Infrastructure-as-a-Service) con risorse PaaS (Platform-as-a-Service) installate. È possibile effettuare il provisioning delle risorse PaaS e delle macchine virtuali usando i modelli di Resource Manager.

La scomposizione di una distribuzione in un set di modelli specifici dello scopo di destinazione offre vantaggi di test, riutilizzo e leggibilità. Per informazioni generali sui modelli annidati, inclusi gli esempi di codice, vedere Uso di modelli collegati e annidati durante la distribuzione delle risorse di Azure.

Nota

Gli ambienti di distribuzione di Azure (ADE) sono altamente consigliati per la creazione di ambienti. AdE consente agli sviluppatori di distribuire rapidamente l'infrastruttura di app usando modelli basati su progetti, garantendo ambienti coerenti e sicuri per i team di sviluppo.

Per altre informazioni sugli ambienti di distribuzione di Azure, vedere la documentazione degli ambienti di distribuzione di Azure.

Distribuire modelli annidati con Visual Studio

Il modello di progetto Gruppo di risorse di Azure in Visual Studio semplifica lo sviluppo e il debug di modelli di Resource Manager. Quando si aggiunge un modello annidato al file modello di azuredeploy.json principale, Visual Studio aggiunge gli elementi seguenti per rendere il modello più flessibile:

  • Sottocartella con il modello secondario e i file di parametri
  • Nomi di variabili nel file modello principale
  • Due parametri chiave e _artifactsLocation_artifactsLocationSasToken

In DevTest Labs i modelli arm sono archiviati in un repository Git collegato al lab. Quando si usa uno dei modelli di repository collegati per creare un nuovo ambiente, la distribuzione copia i file modello in un contenitore Archiviazione di Azure nel lab. Quando si aggiunge una risorsa modello annidata al repository e al file modello principale, Visual Studio identifica i _artifactsLocation valori e _artifactsLocationSasToken , copia le sottocartelle nel contenitore di archiviazione e inserisce il token di posizione e firma di accesso condiviso nei file dei parametri.

Struttura della cartella del modello annidata

Nell'esempio di modello seguente la cartella del repository Git include una sottocartella, nestedtemplates, con i file modello annidati NestOne.json e NestOne.parameters.json. Il azuredeploy.json file modello principale compila l'URI per i modelli secondari usando il percorso degli artefatti, la cartella del modello annidata e il nome file del modello annidato. L'URI per il file di parametri è il percorso degli artefatti, la cartella del modello annidata e il file di parametri del modello annidato. È possibile aggiungere più sottocartelle modello annidate alla cartella primaria, ma a un solo livello di annidamento.

Lo screenshot seguente mostra la struttura del progetto in Visual Studio:

Screenshot che mostra la struttura del progetto modello annidata in Visual Studio.

Esempio di distribuzione annidata

L'esempio seguente illustra il file di modello arm principale azuredeploy.json per la distribuzione annidata:


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

Passaggi successivi