Modelli di distribuzione Azure Resource ManagerAzure Resource Manager deployment modes

Quando si distribuiscono le risorse, specificare se la distribuzione è un aggiornamento incrementale o completo.When deploying your resources, you specify that the deployment is either an incremental update or a complete update. La differenza tra queste due modalità è il modo in cui Gestione risorse gestisce le risorse esistenti nel gruppo di risorse che non sono incluse nel modello.The difference between these two modes is how Resource Manager handles existing resources in the resource group that aren't in the template.

Per entrambe le modalità, Resource Manager prova a creare tutte le risorse specificate nel modello.For both modes, Resource Manager tries to create all resources specified in the template. Se la risorsa esiste già nel gruppo di risorse e le relative impostazioni sono identiche, non viene eseguita alcuna operazione per tale risorsa.If the resource already exists in the resource group and its settings are unchanged, no operation is taken for that resource. Se si modificano i valori della proprietà per una risorsa, questa viene aggiornata con i nuovi valori.If you change the property values for a resource, the resource is updated with those new values. Se si prova ad aggiornare il percorso o il tipo di una risorsa esistente, la distribuzione ha esito negativo e restituisce un errore.If you try to update the location or type of an existing resource, the deployment fails with an error. È invece necessario distribuire una nuova risorsa con il percorso o il tipo necessari.Instead, deploy a new resource with the location or type that you need.

La modalità predefinita è incrementale.The default mode is incremental.

Modalità completaComplete mode

Nella modalità di completamento, Resource Manager elimina le risorse esistenti nel gruppo di risorse che non sono specificate nel modello.In complete mode, Resource Manager deletes resources that exist in the resource group but aren't specified in the template.

Nota

Usare sempre l' operazione di simulazione prima di distribuire un modello in modalità completa.Always use the what-if operation before deploying a template in complete mode. Cosa-se Mostra le risorse che verranno create, eliminate o modificate.What-if shows you which resources will be created, deleted, or modified. Usare il tipo di simulazione per evitare l'eliminazione involontaria delle risorse.Use what-if to avoid unintentionally deleting resources.

Se il modello include una risorsa che non viene distribuita perché la condizione restituisce false, il risultato dipende dalla versione dell'API REST usata per distribuire il modello.If your template includes a resource that isn't deployed because condition evaluates to false, the result depends on which REST API version you use to deploy the template. Se si usa una versione precedente alla 2019-05-10, la risorsa non viene eliminata.If you use a version earlier than 2019-05-10, the resource isn't deleted. Con 2019-05-10 o versioni successive, la risorsa viene eliminata.With 2019-05-10 or later, the resource is deleted. Le versioni più recenti di Azure PowerShell e dell'interfaccia della riga di comando di Azure Elimina la risorsa.The latest versions of Azure PowerShell and Azure CLI delete the resource.

Prestare attenzione usando la modalità completa con i cicli di copia.Be careful using complete mode with copy loops. Tutte le risorse non specificate nel modello dopo la risoluzione del ciclo di copia verranno eliminate.Any resources that aren't specified in the template after resolving the copy loop are deleted.

Se si esegue la distribuzione in più di un gruppo di risorse in un modello, le risorse nel gruppo di risorse specificato nell'operazione di distribuzione sono idonee per essere eliminate.If you deploy to more than one resource group in a template, resources in the resource group specified in the deployment operation are eligible to be deleted. Le risorse nei gruppi di risorse secondarie non vengono eliminate.Resources in the secondary resource groups aren't deleted.

Esistono alcune differenze nel modo in cui i tipi di risorse gestiscono le eliminazioni in modalità completa.There are some differences in how resource types handle complete mode deletions. Le risorse padre vengono eliminate automaticamente quando non sono specificate in un modello distribuito in modalità completa.Parent resources are automatically deleted when not in a template that's deployed in complete mode. Alcune risorse figlio non vengono eliminate automaticamente quando non sono specificate nel modello.Some child resources aren't automatically deleted when not in the template. Tuttavia, queste risorse figlio vengono eliminate se la risorsa padre viene eliminata.However, these child resources are deleted if the parent resource is deleted.

Ad esempio, se il gruppo di risorse contiene una zona DNS (tipo di risorsa Microsoft.Network/dnsZones) e un record CNAME (tipo di risorsa Microsoft.Network/dnsZones/CNAME), la zona DNS è la risorsa padre per il record CNAME.For example, if your resource group contains a DNS zone (Microsoft.Network/dnsZones resource type) and a CNAME record (Microsoft.Network/dnsZones/CNAME resource type), the DNS zone is the parent resource for the CNAME record. Se si distribuisce in la modalità completa e non si include la zona DNS nel modello, la zona DNS e il record CNAME vengono entrambi eliminati.If you deploy with complete mode and don't include the DNS zone in your template, the DNS zone and the CNAME record are both deleted. Se si include la zona DNS nel modello, ma non si include il record CNAME, il CNAME non viene eliminato.If you include the DNS zone in your template but don't include the CNAME record, the CNAME isn't deleted.

Per informazioni dettagliate sul modo in cui i tipi di risorsa gestiscono l'eliminazione, vedere Eliminazione delle risorse di Azure per le distribuzioni in modalità completa.For a list of how resource types handle deletion, see Deletion of Azure resources for complete mode deployments.

Se il gruppo di risorse è bloccato, la modalità di completamento non comporta l'eliminazione delle risorse.If the resource group is locked, complete mode doesn't delete the resources.

Nota

Solo i modelli a livello di radice supportano la modalità di distribuzione completa.Only root-level templates support the complete deployment mode. Per modelli collegati o annidati, è necessario usare la modalità di distribuzione incrementale.For linked or nested templates, you must use incremental mode.

Le distribuzioni a livello di sottoscrizione non supportano la modalità completa.Subscription level deployments don't support complete mode.

Attualmente, il portale non supporta la modalità completa.Currently, the portal doesn't support complete mode.

Modalità incrementaleIncremental mode

Nella modalità incrementale, Resource Manager lascia invariate le risorse esistenti nel gruppo di risorse che non sono specificate nel modello.In incremental mode, Resource Manager leaves unchanged resources that exist in the resource group but aren't specified in the template. Le risorse nel modello vengono aggiunte al gruppo di risorse.Resources in the template are added to the resource group.

Nota

Quando si ridistribuisce una risorsa esistente in modalità incrementale, tutte le proprietà vengono riapplicate.When redeploying an existing resource in incremental mode, all properties are reapplied. Le proprietà non vengono aggiunte in modo incrementale.The properties aren't incrementally added. Un equivoco comune è pensare che le proprietà che non sono specificate nel modello rimangano invariate.A common misunderstanding is to think properties that aren't specified in the template are left unchanged. Se non si specificano determinate proprietà, Gestione risorse interpreta la distribuzione come sovrascrivendo tali valori.If you don't specify certain properties, Resource Manager interprets the deployment as overwriting those values. Le proprietà che non sono incluse nel modello vengono reimpostate sui valori predefiniti.Properties that aren't included in the template are reset to the default values. Specificare tutti i valori non predefiniti per la risorsa, non solo quelli che si sta aggiornando.Specify all non-default values for the resource, not just the ones you're updating. La definizione di risorsa nel modello contiene sempre lo stato finale della risorsa.The resource definition in the template always contains the final state of the resource. Non può rappresentare un aggiornamento parziale di una risorsa esistente.It can't represent a partial update to an existing resource.

In rari casi, le proprietà specificate per una risorsa vengono effettivamente implementate come una risorsa figlio.In rare cases, properties that you specify for a resource are actually implemented as a child resource. Ad esempio, quando si specificano i valori di configurazione del sito per un'app Web, tali valori vengono implementati nel tipo di risorsa figlio Microsoft.Web/sites/config .For example, when you provide site configuration values for a web app, those values are implemented in the child resource type Microsoft.Web/sites/config. Se si ridistribuisce l'app Web e si specifica un oggetto vuoto per i valori di configurazione del sito, la risorsa figlio non viene aggiornata.If you redeploy the web app and specify an empty object for the site configuration values, the child resource isn't updated. Tuttavia, se si specificano nuovi valori di configurazione del sito, il tipo di risorsa figlio viene aggiornato.However, if you provide new site configuration values, the child resource type is updated.

Risultati di esempioExample result

Per illustrare la differenza tra le modalità incrementale e completa, si consideri lo scenario seguente.To illustrate the difference between incremental and complete modes, consider the following scenario.

Il gruppo di risorse contiene:Resource Group contains:

  • Risorsa AResource A
  • Risorsa BResource B
  • Risorsa CResource C

Modello contiene:Template contains:

  • Risorsa AResource A
  • Risorsa BResource B
  • Risorsa DResource D

Quando viene implementato in modalità incrementale, il gruppo di risorse contiene:When deployed in incremental mode, the resource group has:

  • Risorsa AResource A
  • Risorsa BResource B
  • Risorsa CResource C
  • Risorsa DResource D

Quando viene implementato in modalità completa, la risorsa C viene eliminata.When deployed in complete mode, Resource C is deleted. Il gruppo di risorse contiene:The resource group has:

  • Risorsa AResource A
  • Risorsa BResource B
  • Risorsa DResource D

Impostare la modalità di distribuzioneSet deployment mode

Per impostare la modalità di distribuzione durante la distribuzione con PowerShell, usare il parametro Mode.To set the deployment mode when deploying with PowerShell, use the Mode parameter.

New-AzResourceGroupDeployment `
  -Mode Complete `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile c:\MyTemplates\storage.json

Per impostare la modalità di distribuzione durante la distribuzione con interfaccia della riga di comando di Azure, usare il parametro mode.To set the deployment mode when deploying with Azure CLI, use the mode parameter.

az deployment group create \
  --name ExampleDeployment \
  --mode Complete \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters storageAccountType=Standard_GRS

L'esempio seguente illustra un modello collegato impostato sulla modalità di distribuzione incrementale:The following example shows a linked template set to incremental deployment mode:

"resources": [
  {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2017-05-10",
      "name": "linkedTemplate",
      "properties": {
          "mode": "Incremental",
          <nested-template-or-external-template>
      }
  }
]

Passaggi successiviNext steps