Usare Azure PowerShell per esportare un modello

Per facilitare la creazione di modelli di Resource Manager di Azure, è possibile esportare un modello da risorse esistenti. Il modello esportato consente di comprendere la sintassi e le proprietà JSON che distribuiscono le risorse. Per automatizzare le distribuzioni future, iniziare con il modello esportato e modificarlo per lo scenario. Il processo di esportazione del modello tenta di creare un modello utilizzabile. Tuttavia, la maggior parte dei modelli esportati richiede alcune modifiche prima che possano essere usate per distribuire le risorse di Azure.

Resource Manager consente di selezionare una o più risorse per l'esportazione in un modello. È possibile concentrarsi esattamente sulle risorse necessarie nel modello.

Questo articolo illustra come esportare modelli tramite Azure PowerShell. Per altre opzioni, vedere:

Scegliere l'opzione di esportazione corretta

Per esportare un modello sono disponibili due modi:

  • Esportare da un gruppo di risorse o da una risorsa. Questa opzione genera un nuovo modello da risorse esistenti. Il modello esportato è uno "snapshot" dello stato corrente del gruppo di risorse. È possibile esportare un intero gruppo di risorse o risorse specifiche all'interno di tale gruppo di risorse.

  • Salva dalla cronologia. Questa opzione recupera una copia esatta di un modello usato per la distribuzione. Specificare la distribuzione dalla cronologia di distribuzione.

A seconda dell'opzione scelta, i modelli esportati hanno qualità diverse.

Da gruppo di risorse o risorsa Dalla cronologia
Il modello viene generato automaticamente. È probabile che si voglia migliorare il codice prima di distribuirlo. Il modello è una copia esatta di quella creata dall'autore del modello. È pronto per essere ridistribuito senza modifiche.
Il modello è uno snapshot dello stato corrente delle risorse. Include tutte le modifiche manuali apportate dopo la distribuzione. Il modello mostra solo lo stato delle risorse al momento della distribuzione. Eventuali modifiche manuali apportate dopo la distribuzione non sono incluse.
È possibile selezionare le risorse da un gruppo di risorse da esportare. Sono incluse tutte le risorse per una distribuzione specifica. Non è possibile selezionare un subset di tali risorse o aggiungere risorse aggiunte in un momento diverso.
Il modello include tutte le proprietà per le risorse, incluse alcune proprietà che normalmente non vengono impostate durante la distribuzione. È possibile rimuovere o pulire queste proprietà prima di riutilizzare il modello. Il modello include solo le proprietà necessarie per la distribuzione. Il modello è più sparse e più facile da leggere.
Il modello probabilmente non include tutti i parametri necessari per il riutilizzo. La maggior parte dei valori delle proprietà è hardcoded nel modello. Per ridistribuire il modello in altri ambienti, è necessario aggiungere parametri che aumentano la possibilità di configurare le risorse. È possibile deselezionare Includi parametri in modo da poter creare parametri personalizzati. Il modello include parametri che semplificano la ridistribuitura in ambienti diversi.

Esportare il modello da un gruppo di risorse o una risorsa, quando:

  • È necessario acquisire le modifiche alle risorse apportate dopo la distribuzione originale.
  • Si vuole selezionare le risorse esportate.
  • Le risorse non sono state create con un modello.

Esportare il modello dalla cronologia, quando:

  • Si vuole un modello facile da riutilizzare.
  • Non è necessario includere le modifiche apportate dopo la distribuzione originale.

Limitazioni

Non è garantito che l'esportazione abbia esito positivo. L'esportazione non è un modo affidabile per trasformare le risorse preesistenti in modelli utilizzabili nell'ambiente di produzione. È preferibile creare risorse da zero usando un file Bicep scritto a mano, un modello arm o terraform.

Quando si esporta da un gruppo di risorse o una risorsa, il modello esportato viene generato dagli schemi pubblicati per ogni tipo di risorsa. In alcuni casi, lo schema non ha la versione più recente per un tipo di risorsa. Controllare il modello esportato per assicurarsi che includa le proprietà necessarie. Se necessario, modificare il modello esportato per usare la versione dell'API necessaria.

Alcuni parametri della password potrebbero non essere presenti nei modelli esportati. È necessario controllare il riferimento al modello e aggiungere manualmente questi parametri prima di poter usare i modelli per distribuire le risorse.

La funzionalità del modello di esportazione non supporta l'esportazione Azure Data Factory risorse. Per informazioni su come esportare le risorse di Data Factory, vedere Copiare o clonare una data factory in Azure Data Factory.

Per esportare le risorse create tramite il modello di distribuzione classica, è necessario eseguirne la migrazione al modello di distribuzione Resource Manager.

Se viene visualizzato un avviso durante l'esportazione di un modello che indica che un tipo di risorsa non è stato esportato, è comunque possibile individuare le proprietà per tale risorsa. Per le proprietà delle risorse, vedere informazioni di riferimento sul modello. È anche possibile esaminare l'API REST di Azure per il tipo di risorsa.

Esiste un limite di 200 risorse nel gruppo di risorse per cui si crea il modello esportato. Se si tenta di esportare un gruppo di risorse con più di 200 risorse, viene visualizzato il messaggio Export template is not supported for resource groups more than 200 resources di errore.

Esportare il modello da un gruppo di risorse

Dopo aver configurato il gruppo di risorse, è possibile esportare un modello di Resource Manager di Azure per il gruppo di risorse.

Per esportare tutte le risorse in un gruppo di risorse, usare il cmdlet Export-AzResourceGroup e specificare il nome del gruppo di risorse.

Export-AzResourceGroup -ResourceGroupName demoGroup

Salva il modello come file locale.

Anziché esportare tutte le risorse nel gruppo di risorse, è possibile selezionare le risorse da esportare.

Per esportare una risorsa, passare tale ID risorsa.

$resource = Get-AzResource `
  -ResourceGroupName <resource-group-name> `
  -ResourceName <resource-name> `
  -ResourceType <resource-type>
Export-AzResourceGroup `
  -ResourceGroupName <resource-group-name> `
  -Resource $resource.ResourceId

Per esportare più risorse, passare gli ID risorsa in una matrice.

Export-AzResourceGroup `
  -ResourceGroupName <resource-group-name> `
  -Resource @($resource1.ResourceId, $resource2.ResourceId)

Quando si esporta il modello, è possibile specificare se i parametri vengono usati nel modello. Per impostazione predefinita, i parametri per i nomi delle risorse sono inclusi, ma non hanno un valore predefinito.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "type": "String"
  }
}

Se si usa il parametro durante l'esportazione -SkipResourceNameParameterization del modello, i parametri per i nomi delle risorse non vengono inclusi nel modello. Il nome della risorsa viene invece impostato direttamente sulla risorsa sul valore corrente. Non è possibile personalizzare il nome durante la distribuzione.

"resources": [
  {
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2022-09-01",
    "name": "demoHostPlan",
    ...
  }
]

Se si usa il parametro durante l'esportazione -IncludeParameterDefaultValue del modello, il parametro del modello include un valore predefinito impostato sul valore corrente. È possibile usare tale valore predefinito o sovrascrivere il valore predefinito passando un valore diverso.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "defaultValue": "demoHostPlan",
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "defaultValue": "webSite3bwt23ktvdo36",
    "type": "String"
  }
}

Salvare un modello dalla cronologia di distribuzione

È possibile salvare un modello da una distribuzione nella cronologia di distribuzione. Il modello che si ottiene è esattamente quello usato per la distribuzione.

Per ottenere un modello da una distribuzione di un gruppo di risorse, usare il cmdlet Save-AzResourceGroupDeploymentTemplate . Specificare il nome della distribuzione da recuperare. Per informazioni su come ottenere il nome di una distribuzione, vedere Visualizzare la cronologia di distribuzione con Azure Resource Manager.

Save-AzResourceGroupDeploymentTemplate -ResourceGroupName demoGroup -DeploymentName demoDeployment

Il modello viene salvato come file locale con il nome della distribuzione.

Per distribuire i modelli ad altri livelli, usare:

Passaggi successivi