Esercitazione: Distribuire una specifica di modello come modello collegato

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

Prerequisiti

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

Nota

Per usare le specifiche di modello con Azure PowerShell, è necessario installare 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

Seguire Avvio rapido: Creare e distribuire specifiche di modello per creare una specifica di modello per la distribuzione di un account di archiviazione. Nella sezione successiva sono necessari il nome del gruppo di risorse della specifica di modello, il nome della specifica di modello e la versione della specifica di modello.

Creare il modello principale

Per distribuire una specifica di modello in un modello di Resource Manager, aggiungere una risorsa distribuzioni al modello principale. templateLink Nella proprietà specificare l'ID risorsa di una specifica di 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 di modello viene generato usando la resourceID() funzione . L'argomento gruppo di risorse nella funzione resourceID() è facoltativo se templateSpec 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 di modello è:

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

Nota

ApiVersion deve Microsoft.Resources/deployments essere 2020-06-01 o successiva.

Distribuire il modello

Quando si distribuisce il modello collegato, viene distribuita sia l'applicazione Web che l'account di archiviazione. La distribuzione equivale 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.