Esercitazione: Distribuire una specifica di modello come modello collegato

Informazioni su come distribuire una specifica di modello esistente usando una distribuzione collegata. Usare le specifiche del modello per condividere i modelli di Resource Manager con altri utenti dell'organizzazione. Dopo aver creato una specifica del modello, è possibile distribuire la specifica del modello usando Azure PowerShell o l'interfaccia della riga di comando di Azure. È anche possibile distribuire la specifica del modello come parte della soluzione usando un modello collegato.

Prerequisiti

Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.

Nota

Per usare la specifica del modello con Azure PowerShell, è necessario installare la versione 5.0.0 o successiva. Per usarla con l'interfaccia della riga di comando di Azure, usare la versione 2.14.2 o successiva.

Creare una specifica di modello

Avvio rapido: Creare e distribuire le specifiche del modello per creare una specifica del modello per la distribuzione di un account di archiviazione. È necessario il nome del gruppo di risorse della specifica del modello, il nome della specifica del modello e la versione della specifica del modello nella sezione successiva.

Creare il modello principale

Per distribuire una specifica di modello in un modello di Resource Manager, aggiungere una risorsa di distribuzioni al modello principale. templateLink Nella proprietà specificare l'ID risorsa di una specifica del modello. Creare un modello con il codice JSON seguente denominato azuredeploy.json. Questa esercitazione presuppone che sia stato salvato in un percorso c:\Templates\deployTS\azuredeploy.json , ma è possibile usare qualsiasi percorso.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "tsResourceGroup":{
      "type": "string",
      "metadata": {
        "Description": "Specifies the resource group name of the template spec."
      }
    },
    "tsName": {
      "type": "string",
      "metadata": {
        "Description": "Specifies the name of the template spec."
      }
    },
    "tsVersion": {
      "type": "string",
      "defaultValue": "1.0.0.0",
      "metadata": {
        "Description": "Specifies the version the template spec."
      }
    },
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "metadata": {
        "Description": "Specifies the storage account type required by the template spec."
      }
    }
  },
  "variables": {
    "appServicePlanName": "[concat('plan', uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2016-09-01",
      "name": "[variables('appServicePlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2020-10-01",
      "name": "createStorage",
      "properties": {
        "mode": "Incremental",
        "templateLink": {
          "id": "[resourceId(parameters('tsResourceGroup'), 'Microsoft.Resources/templateSpecs/versions', parameters('tsName'), parameters('tsVersion'))]"
        },
        "parameters": {
          "storageAccountType": {
            "value": "[parameters('storageAccountType')]"
          }
        }
      }
    }
  ],
  "outputs": {
    "templateSpecId": {
      "type": "string",
      "value": "[resourceId(parameters('tsResourceGroup'), 'Microsoft.Resources/templateSpecs/versions', parameters('tsName'), parameters('tsVersion'))]"
    }
  }
}

L'ID della specifica del modello viene generato usando la resourceID() funzione . L'argomento del gruppo di risorse nella funzione resourceID() è facoltativo se il modelloSpec si trova nello stesso gruppo di risorse della distribuzione corrente. È anche possibile passare direttamente l'ID risorsa come parametro. Per ottenere l'ID, usare:

$id = (Get-AzTemplateSpec -ResourceGroupName $resourceGroupName -Name $templateSpecName -Version $templateSpecVersion).Versions.Id

La sintassi per il passaggio di parametri alla specifica del modello è:

"parameters": {
  "storageAccountType": {
    "value": "[parameters('storageAccountType')]"
  }
}

Nota

L'apiVersion di Microsoft.Resources/deployments deve essere 2020-06-01 o successiva.

Distribuire il modello

Quando si distribuisce il modello collegato, distribuisce sia l'applicazione Web che l'account di archiviazione. La distribuzione è identica alla distribuzione di altri modelli di Resource Manager.

New-AzResourceGroup `
  -Name webRG `
  -Location westus2

New-AzResourceGroupDeployment `
  -ResourceGroupName webRG `
  -TemplateFile "c:\Templates\deployTS\azuredeploy.json" `
  -tsResourceGroup templateSpecRg `
  -tsName storageSpec `
  -tsVersion 1.0

Passaggi successivi

Per informazioni su come creare una specifica di modello che include modelli collegati, vedere Creare una specifica di modello di un modello collegato.