Reverter o erro para uma implementação com êxito

Quando uma implementação falha, pode reimplementar automaticamente uma implementação com êxito anterior a partir do histórico de implementações. Esta funcionalidade é útil se tiver um bom estado conhecido para a implementação da infraestrutura e quiser reverter para este estado. Pode especificar uma implementação anterior específica ou a última implementação com êxito.

Importante

Esta funcionalidade reverte uma implementação falhada ao reimplementar uma implementação anterior. Este resultado pode ser diferente do que seria de esperar ao anular a implementação falhada. Certifique-se de que compreende como a implementação anterior foi reimplementada.

Considerações para reimplementar

Antes de utilizar esta funcionalidade, considere estes detalhes sobre como a reimplementação é processada:

  • A implementação anterior é executada com o modo completo, mesmo que tenha utilizado o modo incremental durante a implementação anterior. A reimplementação no modo completo pode produzir resultados inesperados quando a implementação anterior utilizou incrementalmente. O modo completo significa que todos os recursos não incluídos na implementação anterior são eliminados. Especifique uma implementação anterior que represente todos os recursos e os respetivos estados que pretende que existam no grupo de recursos. Para obter mais informações, veja Modos de implementação.
  • A reimplementação é executada exatamente como foi executada anteriormente com os mesmos parâmetros. Não pode alterar os parâmetros.
  • A reimplementação afeta apenas os recursos, não são afetadas quaisquer alterações de dados.
  • Só pode utilizar esta funcionalidade com implementações de grupos de recursos. Não suporta implementações ao nível da subscrição, do grupo de gestão ou do inquilino. Para obter mais informações sobre a implementação ao nível da subscrição, veja Criar grupos de recursos e recursos ao nível da subscrição.
  • Só pode utilizar esta opção com implementações ao nível da raiz. As implementações de um modelo aninhado não estão disponíveis para reimplementação.

Para utilizar esta opção, as suas implementações têm de ter nomes exclusivos no histórico de implementações. É apenas com nomes exclusivos que uma implementação específica pode ser identificada. Se não tiver nomes exclusivos, uma implementação falhada poderá substituir uma implementação com êxito no histórico.

Se especificar uma implementação anterior que não existe no histórico de implementações, a reversão devolve um erro.

PowerShell

Para reimplementar a última implementação com êxito, adicione o -RollbackToLastDeployment parâmetro como um sinalizador.

New-AzResourceGroupDeployment -Name ExampleDeployment02 `
  -ResourceGroupName $resourceGroupName `
  -TemplateFile c:\MyTemplates\azuredeploy.json `
  -RollbackToLastDeployment

Para reimplementar uma implementação específica, utilize o -RollBackDeploymentName parâmetro e indique o nome da implementação. A implementação especificada tem de ter sido efetuada com êxito.

New-AzResourceGroupDeployment -Name ExampleDeployment02 `
  -ResourceGroupName $resourceGroupName `
  -TemplateFile c:\MyTemplates\azuredeploy.json `
  -RollBackDeploymentName ExampleDeployment01

CLI do Azure

Para reimplementar a última implementação com êxito, adicione o --rollback-on-error parâmetro como um sinalizador.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters storageAccountType=Standard_GRS \
  --rollback-on-error

Para reimplementar uma implementação específica, utilize o --rollback-on-error parâmetro e indique o nome da implementação. A implementação especificada tem de ter sido efetuada com êxito.

az deployment group create \
  --name ExampleDeployment02 \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters storageAccountType=Standard_GRS \
  --rollback-on-error ExampleDeployment01

API REST

Para reimplementar a última implementação com êxito se a implementação atual falhar, utilize:

{
  "properties": {
    "templateLink": {
      "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json",
      "contentVersion": "1.0.0.0"
    },
    "mode": "Incremental",
    "parametersLink": {
      "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json",
      "contentVersion": "1.0.0.0"
    },
    "onErrorDeployment": {
      "type": "LastSuccessful",
    }
  }
}

Para reimplementar uma implementação específica se a implementação atual falhar, utilize:

{
  "properties": {
    "templateLink": {
      "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json",
      "contentVersion": "1.0.0.0"
    },
    "mode": "Incremental",
    "parametersLink": {
      "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json",
      "contentVersion": "1.0.0.0"
    },
    "onErrorDeployment": {
      "type": "SpecificDeployment",
      "deploymentName": "<deploymentname>"
    }
  }
}

A implementação especificada tem de ter sido efetuada com êxito.

Passos seguintes