我已阅读Azure中automatically deploying resources groups的各种文章,包括使用templates以及如何troubleshoot部署失败。
这些文章中不清楚的是,如果有任何内容,则构建回滚功能,和/或在部署过程中出现错误时将资源基础架构恢复到上一个成功状态的最佳方法。
例如,在Octopus Deploy中,存在某些构建步骤的概念,这些步骤仅在发生故障时触发,这实际上使所有内容都恢复到部署开始之前的状态。
我可以看到有可能"验证"您的模板和基础架构通过运行Test-AzureRmResourceGroupDeployment
cmdlet来减少实际运行部署之前的潜在错误,并且还可以通过运行Get-AzureRmResourceGroupDeployment
来查看部署后的配置状态:
我可以从中检查failed
状态并有条件地运行脚本以在失败后进行清理。
但是,是否有内置的东西可以满足这种情况?
答案 0 :(得分:1)
虽然可以在现有环境的顶部滚动部署。模板的主要目的是(或似乎是)部署新环境。
这意味着如果出现问题,您将删除整个内容并重新开始。或者创建自己的逻辑以进入并找出原因。 Azure在发生故障时唯一能做的就是向您报告。然后由您决定如何对此做出反应。
我个人的方法是通过模板(虚拟机,存储等)部署基本构建块,然后让配置管理引擎接管部署软件的更复杂任务,并定义配置。确实有能力回滚并修复它们的东西。
答案 1 :(得分:0)
这就是我所说的。它可能会有所帮助,但基本上你必须抛出自己的错误,因为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")
干杯
路易斯