簡體   English   中英

在自動化的Azure資源組部署中如何處理錯誤/失敗?

[英]How are errors/failures handled in automated Azure Resource Group deployments?

我已經閱讀了許多有關在Azure中自動部署資源組的文章,包括模板的使用以及如何對失敗的部署進行故障排除

這些文章中尚不清楚的是,如果有的話,內置的回滾功能是什么,和/或在部署過程中發生錯誤的情況下,將資源基礎結構恢復到最后成功狀態的最佳方法。

例如,在Octopus Deploy中存在某些構建步驟的概念,這些構建步驟僅在發生故障時才觸發,這實際上使一切恢復到部署開始之前的狀態。

我可以看到可以通過運行Test-AzureRmResourceGroupDeployment cmdlet來“驗證”模板和基礎結構,以在實際運行部署之前減少潛在的錯誤,並且可以通過運行Get-AzureRmResourceGroupDeployment查看部署后的配置狀態。 :

在此處輸入圖片說明

從中我可以檢查failed狀態並有條件地運行腳本以在失敗后進行清理。

但是,是否有內置功能可以滿足這種情況?

雖然可以在現有環境的頂部進行部署。 模板的主要目的是(或似乎是)部署新環境。

這意味着,如果在執行過程中出現故障,則將整個操作刪除,然后重新開始。 或創建自己的邏輯以找出原因。 萬一發生故障,Azure唯一要做的就是向您報告。 然后由您決定如何應對。

我個人的方法是通過模板(例如VM,存儲等)部署基本構件,然后讓配置管理引擎接管部署軟件和定義配置的更復雜的任務。 確實具有智能的東西可以回滾並修復它們。

這就是我整理的內容。 這可能會有所幫助,但基本上您必須拋出自己的錯誤,因為Test-AzureRmResourceGroupDeployment的結果為null才能成功,但失敗時會有一個對象。

Do{
   Try{
       Write-Output "Testing Deployment..."
       If ($TestResult = Test-AzureRmResourceGroupDeployment -ResourceGroupName $ResourceGroupName -TemplateFile $VMTemplatePath -TemplateParameterObject $VMDeploymentParameters) {
          Throw "Testing failed.`r`n$($TestResult.Message)`r`n"
       }
       Write-Output "Testing complete."
       $TestResponse = "N"
   }
   Catch{
       Write-Output $_
       If ($TestResponse = (Read-Host "Would you like to try again? Y/N.") -ne "Y") { Exit }
   }
}
While($TestResponse -eq "Y")

干杯

劉易斯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM