Wycofywanie po błędzie po pomyślnym wdrożeniu

Jeśli wdrożenie zakończy się niepowodzeniem, można automatycznie ponownie wdedytować wcześniejsze pomyślne wdrożenie z historii wdrożenia. Ta funkcja jest przydatna, jeśli masz znany dobry stan dla wdrożenia infrastruktury i chcesz przywrócić ten stan. Można określić konkretne wcześniejsze lub ostatnie pomyślne wdrożenie.

Ważne

Ta funkcja wycofuje wdrożenie, które zakończyło się niepowodzeniem, przez ponowne wdrożenie. Ten wynik może różnić się od tego, czego można oczekiwać po cofeniu wdrożenia, które zakończyło się niepowodzeniem. Upewnij się, że rozumiesz sposób ponownego wdrażania wcześniejszego wdrożenia.

Zagadnienia dotyczące ponownego lodowania

Przed rozpoczęciem korzystania z tej funkcji należy wziąć pod uwagę następujące szczegóły dotyczące sposobu obsługi ponownego stosowania:

  • Poprzednie wdrożenie jest uruchamiane w trybie ukończenia,nawet jeśli w poprzednim wdrożeniu był używany tryb przyrostowy. Ponowne wdrożenie w trybie ukończenia może dawać nieoczekiwane wyniki, gdy we wcześniejszym wdrożeniu było używane przyrostowe. Tryb ukończenia oznacza, że wszystkie zasoby, które nie zostały uwzględnione w poprzednim wdrożeniu, zostaną usunięte. Określ wcześniejsze wdrożenie, które reprezentuje wszystkie zasoby i ich stany, które mają istnieć w grupie zasobów. Aby uzyskać więcej informacji, zobacz tryby wdrażania.
  • Ponowne uruchomienie jest uruchamiane dokładnie tak, jak wcześniej z tych samych parametrów. Nie można zmienić parametrów.
  • Ponownelodowanie wpływa tylko na zasoby, a zmiany danych nie mają wpływu.
  • Tej funkcji można używać tylko w przypadku wdrożeń grup zasobów. Nie obsługuje wdrożeń na poziomie subskrypcji, grupy zarządzania ani dzierżawy. Aby uzyskać więcej informacji na temat wdrażania na poziomie subskrypcji, zobacz Tworzenie grup zasobów i zasobów na poziomie subskrypcji.
  • Tej opcji można używać tylko w przypadku wdrożeń na poziomie głównym. Wdrożenia z zagnieżdżonych szablonów nie są dostępne do ponownego wdrożenia.

Aby użyć tej opcji, wdrożenia muszą mieć unikatowe nazwy w historii wdrożenia. Tylko z unikatowymi nazwami można zidentyfikować konkretne wdrożenie. Jeśli nie masz unikatowych nazw, wdrożenie nieudane może zastąpić pomyślne wdrożenie w historii.

Jeśli określisz wcześniejsze wdrożenie, które nie istnieje w historii wdrożenia, wycofywanie zwróci błąd.

PowerShell

Aby ponownie wdedytować ostatnie pomyślne wdrożenie, dodaj -RollbackToLastDeployment parametr jako flagę.

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

Aby ponownie wdrożenie określonego wdrożenia, użyj -RollBackDeploymentName parametru i podaj nazwę wdrożenia. Określone wdrożenie musi zakończyć się pomyślnie.

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

Interfejs wiersza polecenia platformy Azure

Aby ponownie wdedytować ostatnie pomyślne wdrożenie, dodaj --rollback-on-error parametr jako flagę.

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

Aby ponownie wdrożenie określonego wdrożenia, użyj --rollback-on-error parametru i podaj nazwę wdrożenia. Określone wdrożenie musi zakończyć się pomyślnie.

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

Interfejs API REST

Aby ponownie wdedytować ostatnie pomyślne wdrożenie, jeśli bieżące wdrożenie nie powiedzie się, użyj:

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

Aby ponownie wdedytować określone wdrożenie, jeśli bieżące wdrożenie nie powiedzie się, użyj:

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

Określone wdrożenie musi zakończyć się pomyślnie.

Następne kroki