Revertir en caso de error a una implementación correcta

Cuando se produce un error en una implementación, puede ejecutar automáticamente desde el historial de implementación una implementación anterior que sea correcta. Esta funcionalidad es útil si tiene un estado correcto conocido para la implementación de la infraestructura y quiere volver a ese estado. Puede especificar una implementación anterior concreta o la última implementación correcta.

Importante

Esta característica revierte una implementación con errores mediante la reimplementación de una implementación anterior. Este resultado puede ser diferente de lo que cabría esperar al deshacer la implementación con errores. Asegúrese de que comprende cómo se reimplementa la implementación anterior.

Consideraciones acerca de la reimplementación

Antes de usar esta característica, tenga en cuenta los detalles sobre cómo se controla la reimplementación:

  • La implementación anterior se ejecuta mediante el modo completo, incluso si usó el modo incremental durante la implementación anterior. La reimplementación en el modo completo podría producir resultados inesperados si la implementación anterior usó el modo incremental. El modo completo significa que se eliminarán todos los recursos no incluidos en la implementación anterior. Especifique una implementación anterior que represente todos los recursos y estados que desee que existan en el grupo de recursos. Para más información, consulte Modos de implementación.
  • La reimplementación se ejecuta exactamente como se ejecutó previamente y con los mismos parámetros. Los parámetros no se pueden cambiar.
  • La reimplementación solo afecta a los recursos; los cambios en los datos no se ven afectados.
  • Esta característica solo se puede usar con implementaciones de grupos de recursos. No es compatible con implementaciones en el nivel de suscripción, grupo de administración o inquilino. Para más información sobre las implementaciones en el nivel de suscripción, consulte Creación de grupos de recursos y otros recursos en el nivel de suscripción.
  • Solo se puede usar esta opción con las implementaciones de nivel de raíz. Las implementaciones de una plantilla anidada no están disponibles para volver a implementarse.

Para usar esta opción, las implementaciones deben tener nombres únicos en el historial de implementaciones. Solo se puede identificar una implementación concreta mediante estos nombres únicos. Si no hay nombres únicos, una implementación con errores podría sobrescribir una implementación anteriormente correcta en el historial.

Si especifica una implementación anterior que no existe en el historial de implementaciones, la reversión devuelve un error.

PowerShell

Para volver a implementar la última implementación correcta, agregue el parámetro -RollbackToLastDeployment como una marca.

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

Para volver a implementar una implementación específica, use el parámetro -RollBackDeploymentName y proporcione el nombre de la implementación. La implementación especificada debe haberse realizado correctamente.

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

Azure CLI

Para volver a implementar la última implementación correcta, agregue el parámetro --rollback-on-error como una marca.

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

Para volver a implementar una implementación específica, use el parámetro --rollback-on-error y proporcione el nombre de la implementación. La implementación especificada debe haberse realizado correctamente.

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

API DE REST

Para volver a implementar la última implementación correcta si se produce un error en la actual, use:

{
  "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 volver a implementar una implementación específica si se produce un error en la implementación actual, use:

{
  "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>"
    }
  }
}

La implementación especificada debe haberse realizado correctamente.

Pasos siguientes