Откат к успешному развертыванию при ошибке

Если развертывание завершается ошибкой, вы можете автоматически повторно развернуть ресурс, успешно развернутый ранее, из журнала развертывания. Эта функция полезна, если у вас есть известное хорошее состояние развертывания инфраструктуры и вы хотите вернуться к нему. Можно указать либо конкретное более раннее развертывание, либо последнее успешное развертывание.

Важно!

Эта функция выполняет откат неудачного развертывания, повторно осуществляя предыдущее развертывание. Результат может отличаться от того, который вы ожидали при отмене неудачного развертывания. Убедитесь, что вы понимаете, как было выполнено предыдущее развертывание.

Рекомендации по повторному развертыванию

Перед использованием этой функции изучите следующие сведения о том, как обрабатывается повторное развертывание.

  • Предыдущее развертывание выполняется с помощью полного режима, даже если во время предыдущего развертывания использовался добавочный режим. Повторное развертывание в полном режиме может привести к непредвиденным результатам, если предыдущее развертывание было выполнено в добавочном режиме. Полный режим означает, что все ресурсы, не входящие в предыдущее развертывание, будут удалены. Укажите более раннее развертывание, где представлены все ресурсы и их состояния, которые должны существовать в группе ресурсов. Подробнее см. в статье о режимах развертывания.
  • Повторное развертывание выполняется точно так же, как раньше, с теми же параметрами. Изменить параметры нельзя.
  • Повторное развертывание влияет только на ресурсы, изменения данных не затрагиваются.
  • Эту функцию можно использовать только при развертывании группы ресурсов. Она не поддерживает развертывание на уровне подписки, группы управления или клиента. Подробнее о развертываниях на уровне подписки см. в статье Создание групп ресурсов и ресурсов на уровне подписки.
  • Этот параметр можно использовать только с развертываниями корневого уровня. Повторное развертывание из вложенных шаблонов не поддерживается.

Чтобы использовать этот параметр, журнал развертывания должен содержать уникальные имена развертываний. Конкретное развертывание может быть идентифицировано только по уникальному имени. Если уникальных имен нет, неудачное развертывание может перезаписать более раннее успешное развертывание, зафиксированное в журнале.

Если указано более раннее развертывание, которого нет в журнале развертывания, то откат возвращает ошибку.

PowerShell

Чтобы выполнить повторно последнее успешное развертывание, добавьте параметр -RollbackToLastDeployment в качестве флага.

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

Чтобы выполнить повторно конкретное развертывание, используйте параметр -RollBackDeploymentName и укажите имя развертывания. Указанное развертывание должно быть успешным.

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

Azure CLI

Чтобы выполнить повторно последнее успешное развертывание, добавьте параметр --rollback-on-error в качестве флага.

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

Чтобы выполнить повторно конкретное развертывание, используйте параметр --rollback-on-error и укажите имя развертывания. Указанное развертывание должно быть успешным.

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

REST API

Чтобы повторно выполнить последнее успешное развертывание, если текущее развертывание завершается сбоем, используйте следующий код:

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

Чтобы повторно выполнить определенное развертывание, если текущее развертывание завершается сбоем, используйте следующий код:

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

Указанное развертывание должно быть успешным.

Дальнейшие действия