Distribuire una specifica di modello
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:
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
.