Distribuire una specifica di modello

Completato

Dopo aver creato e pubblicato la specifica di modello, è possibile distribuirla. In questa unità verranno illustrati i modi per distribuire una specifica di modello.

Creare una distribuzione usando una specifica di modello

Per distribuire la specifica di un modello in un gruppo di risorse, usare lo stesso cmdlet New-AzResourceGroupDeployment con cui si ha familiarità. Invece di specificare un file modello, si specifica l'ID risorsa di una specifica di modello, come illustrato in questo esempio:

New-AzResourceGroupDeployment `
  -TemplateSpecId '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS'

Anche se le specifiche di modello devono essere create in un gruppo di risorse, è possibile distribuirle in sottoscrizioni, gruppi di gestione o persino tenant usando questi cmdlet:

Per distribuire in questo ambito: Usare questo cmdlet di PowerShell:
Gruppo di risorse New-AzResourceGroupDeployment
Subscription New-AzSubscriptionDeployment
Gruppo di gestione New-AzManagementGroupDeployment
Tenant New-AzTenantDeployment

Ognuno di questi cmdlet accetta il parametro -TemplateSpecId per avviare la distribuzione di una specifica di modello in uno di questi ambiti.

Per distribuire la specifica di un modello in un gruppo di risorse, usare lo stesso comando az deployment group create con cui si ha familiarità. Invece di specificare un file modello, si specifica l'ID risorsa di una specifica di modello, come illustrato in questo esempio:

az deployment group create \
  --template-spec "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS"

Anche se le specifiche di modello devono essere create in un gruppo di risorse, è possibile distribuirle in sottoscrizioni, gruppi di gestione o persino tenant usando questi comandi:

Per distribuire in questo ambito: Eseguire questo comando dell'interfaccia della riga di comando di Azure:
Gruppo di risorse az deployment group create
Subscription az deployment sub create
Gruppo di gestione az deployment mg create
Tenant az deployment tenant create

Ognuno di questi comandi accetta l'argomento --template-spec per avviare la distribuzione di una specifica di modello in uno di questi ambiti.

Usare una specifica di modello come distribuzione collegata

Per usare la specifica di un modello da un altro modello di Azure Resource Manager (modello di ARM), creare una distribuzione che usi tale specifica di modello. Questo tipo di distribuzione viene chiamato distribuzione collegata perché si esegue il collegamento a un modello di distribuzione specificato esternamente.

In Azure una distribuzione è una risorsa con il tipo di risorsa Microsoft.Resources/deployments. Quando si distribuisce un modello di ARM, si crea una risorsa di distribuzione. Lo stesso concetto è valido quando si distribuisce una specifica di modello, come nel codice seguente:

{
  "type": "Microsoft.Resources/deployments",
  "apiVersion": "2020-10-01",
  "name": "createStorage",
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "id": "[resourceId('Microsoft.Resources/templateSpecs/versions', variables('templateSpecName'), variables('templateSpecVersion'))]"
    }
  }
}

Per fornire i parametri alla distribuzione della specifica di modello, si usa la proprietà parameters:

{
  "type": "Microsoft.Resources/deployments",
  "apiVersion": "2020-10-01",
  "name": "createStorage",
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "id": "[resourceId('Microsoft.Resources/templateSpecs/versions', variables('templateSpecName'), variables('templateSpecVersion'))]"
    },
    "parameters": {
      "storageAccountName": {
        "value": "[parameters('storageAccountName')]"
      }
    }
  }
}

Usare una specifica di modello come modulo Bicep

È possibile usare una specifica modello come modulo all'interno di un file Bicep:

module storageAccountTemplateSpec 'ts:f0750bbe-ea75-4ae5-b24d-a92ca601da2c/sharedTemplates/StorageWithoutSAS:1.0' = {
  name: 'storageAccountTemplateSpec'
}

Si noti che il percorso del modulo usa un formato speciale:

Diagram showing the components of the template spec path.

Sono presenti tre componenti per il percorso del modulo, separati dai due punti (:):

  • Schema: Bicep supporta diversi tipi di modulo, denominati schemi. Quando si usa una specifica di modello come modulo, si usa ts come schema.
  • ID sottoscrizione, nome del gruppo di risorse e nome della specifica del modello: questi valori devono specificare la posizione della risorsa della specifica del modello pubblicata in precedenza. Si usano barre in avanti (/) per separare l'ID sottoscrizione, il nome del gruppo di risorse e il nome della specifica del modello. Questa sezione del percorso del modulo non è l'ID risorsa completo della specifica del modello. Indica solo alcuni componenti dell'ID risorsa.
  • Versione: la versione specifica del modello deve essere inclusa.

Nota

Non è possibile usare variabili, parametri o interpolazione di stringhe quando si specifica il percorso di un modulo. Il percorso completo della specifica del modello deve essere salvato nel file Bicep.

Per fornire i parametri alla specifica di modello, si usa la proprietà params:

module storageAccountTemplateSpec 'ts:f0750bbe-ea75-4ae5-b24d-a92ca601da2c/sharedTemplates/StorageWithoutSAS:1.0' = {
  name: 'storageAccountTemplateSpec'
  params: {
    storageAccountName: storageAccountName
  }
}

Il file di specifica del modello viene scaricato e copiato (sottoposto a transpile) nel modello di ARM JSON quando viene compilato il file Bicep. In genere, questa operazione viene eseguita quando si distribuisce il file Bicep, ma è anche possibile usare gli strumenti Bicep per eseguire il transpile in modo esplicito tramite il comando bicep build.