Condividi tramite


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 di modello per condividere modelli di Resource Manager con altri utenti dell'organizzazione. Dopo aver creato una specifica di modello, è possibile distribuirla 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

Per creare una specifica di modello per la distribuzione di un account di archiviazione, vedere Avvio rapido: Creare e distribuire specifiche di modello. Per la sezione successiva è necessario 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 il modello sia stato salvato in 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 resourceID() funzione è facoltativo se la specifica di modello 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.