Partilhar via


Modos de implantação do Azure Resource Manager

Ao implantar seus recursos, você especifica que a implantação é uma atualização incremental ou uma atualização completa. A diferença entre esses dois modos é como o Gerenciador de Recursos lida com recursos existentes no grupo de recursos que não estão no modelo.

Importante

Utilize pilhas de implantação para executar a remoção de recursos ao usar modelos ARM ou arquivos Bicep, uma vez que o modo completo será gradualmente descontinuado.

Para ambos os modos, o Resource Manager tenta criar todos os recursos especificados no modelo. Se o recurso já existir no grupo de recursos e suas configurações não forem alteradas, nenhuma operação será executada para esse recurso. Se você alterar os valores de propriedade de um recurso, o recurso será atualizado com esses novos valores. Se você tentar atualizar o local ou o tipo de um recurso existente, a implantação falhará com um erro. Em vez disso, implante um novo recurso com o local ou tipo que você precisa.

O modo padrão é incremental.

Modo incremental

No modo incremental, o Gerenciador de Recursos deixa inalterados os recursos que existem no grupo de recursos, mas não são especificados no modelo. Os recursos no modelo são adicionados ao grupo de recursos.

Importante

O modo incremental é o modo de implantação recomendado. Se houver necessidade de eliminar recursos como parte de um arquivo Bicep ou modelo JSON ARM, use pilhas de implantação.

Ao reimplantar um recurso existente no modo incremental, todas as propriedades são reaplicadas. As propriedades não são adicionadas incrementalmente. Um mal-entendido comum é pensar que as propriedades que não são especificadas no modelo são deixadas inalteradas. Se não especificar determinadas propriedades, o Gestor de Recursos interpretará a implementação como substituindo esses valores. As propriedades que não estão incluídas no modelo são redefinidas para os valores padrão. Especifique todos os valores não padrão para o recurso, não apenas aqueles que você está atualizando. A definição de recurso no modelo sempre contém o estado final do recurso. Ele não pode representar uma atualização parcial de um recurso existente.

Advertência

Em casos raros, pode-se especificar propriedades num recurso ou num dos seus recursos filho. Dois exemplos comuns são sub-redes em redes virtuais e valores de configuração de site para aplicativos Web. Nesses casos, você deve lidar com atualizações incrementais com cuidado.

Para sub-redes, especifique os valores por meio da subnets propriedade no recurso Microsoft.Network/virtualNetworks . Não defina os valores por meio do recurso filho Microsoft.Network/virtualNetworks/subnets. Desde que as sub-redes sejam definidas na rede virtual, você pode reimplantar a rede virtual e não perder as sub-redes.

Para valores de configuração de site, os valores são implementados no tipo de recurso filho Microsoft.Web/sites/config. Se redistribuir a aplicação web e especificar um objeto vazio para os valores de configuração do site, o sub-recurso não será atualizado. No entanto, se forem fornecidos novos valores de configuração do site, o tipo de recurso filho será atualizado.

Modo completo

Advertência

O modo completo não é recomendado. Se desejar executar exclusões com implantações de modelo Bicep ou ARM, use pilhas de implantação.

No modo completo, o Gerenciador de Recursos exclui recursos que existem no grupo de recursos, mas não são especificados no modelo.

Observação

Sempre use a operação 'e se' antes de implantar um modelo no modo completo. Hipóteses mostram quais recursos serão criados, excluídos ou modificados. Use hipóteses para evitar a exclusão involuntária de recursos.

Se o modelo incluir um recurso que não foi implantado porque a condição é avaliada como false, o resultado dependerá da versão da API REST usada para implantar o modelo. Se você usar uma versão anterior a 2019-05-10, o recurso não será excluído. A partir de 2019-05-10, o recurso é excluído. As versões mais recentes do Azure PowerShell e da CLI do Azure excluem o recurso.

Tenha cuidado ao usar o modo completo com loops de cópia. Todos os recursos que não são especificados no modelo depois de resolver o loop de cópia são excluídos.

Se implantar em mais de um grupo de recursos num modelo, os recursos no grupo de recursos especificado na operação de implantação estão sujeitos a exclusão. Os recursos nos grupos de recursos secundários não são excluídos.

Há algumas diferenças na forma como os tipos de recursos lidam com exclusões de modo completo. Os recursos-mãe são automaticamente eliminados quando não se encontram num modelo implementado no modo completo. Alguns recursos secundários não são excluídos automaticamente quando não estão no esquema. No entanto, esses recursos filho são eliminados se for eliminado o recurso pai.

Por exemplo, se o seu grupo de recursos contiver uma zona DNS (Microsoft.Network/dnsZones tipo de recurso) e um registro CNAME (Microsoft.Network/dnsZones/CNAME tipo de recurso), a zona DNS será o recurso pai para o registro CNAME. Se você implantar com o modo completo e não incluir a zona DNS em seu modelo, a zona DNS e o registro CNAME serão excluídos. Se você incluir a zona DNS em seu modelo, mas não incluir o registro CNAME, o CNAME não será excluído.

Para obter uma lista de como os tipos de recursos lidam com a exclusão, consulte Exclusão de recursos do Azure para implantações de modo completo.

Se o grupo de recursos estiver bloqueado, o modo completo não excluirá os recursos.

Observação

Somente modelos de nível raiz suportam o modo de implantação completo. Para modelos vinculados ou aninhados, você deve usar o modo incremental.

As implantações de nível de assinatura não oferecem suporte ao modo completo.

Atualmente, o portal não suporta o modo completo.

Exemplo de resultado

Para ilustrar a diferença entre os modos incremental e completo, considere o seguinte cenário.

O Grupo de Recursos contém:

  • Recurso A
  • Recurso B
  • Recurso C

O modelo contém:

  • Recurso A
  • Recurso B
  • Recurso D

Quando implantado no modo incremental , o grupo de recursos tem:

  • Recurso A
  • Recurso B
  • Recurso C
  • Recurso D

Quando implantado no modo completo , o Recurso C é excluído. O grupo de recursos tem:

  • Recurso A
  • Recurso B
  • Recurso D

Definir o modo de implantação

Para definir o modo de implantação ao implantar com o PowerShell, use o Mode parâmetro.

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

Para definir o modo de implantação ao implantar com a CLI do Azure, use o mode parâmetro.

az deployment group create \
  --mode Complete \
  --name ExampleDeployment \
  --resource-group ExampleResourceGroup \
  --template-file storage.json

O exemplo a seguir mostra um modelo vinculado definido para o modo de implantação incremental:

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

Próximos passos