0

Я прочитал различные статьи по automatically deploying resources groups в Azure, включая использование templates и как troubleshoot неудачных развертываний.Как обрабатываются ошибки/сбои в автоматических развертываниях Azure Resource Group?

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

Например, в Octopus Deploy существует понятие определенных шагов сборки, которые запускаются только в случае сбоя, которые по существу ставят все так, как было до начала развертывания.

я могу видеть, что можно «проверить» шаблоны и инфраструктуры, запустив Test-AzureRmResourceGroupDeployment командлет, чтобы уменьшить возможные ошибки до фактического запуска развертывания, а также, что можно просматривать состояние продовольствования следующего развертывания, запустив Get-AzureRmResourceGroupDeployment :

enter image description here

, из которых я мог бы проверить на failed статус и условно запустить сценарий для очистки после сбоя.

Однако, есть ли что-нибудь построенное для того, чтобы удовлетворить этот сценарий?

ответ

1

Хотя возможно развертывание развертывания поверх существующей среды. Основная цель шаблонов - (или, как представляется,) для развертывания новой среды.

Это означает, что если что-то не удается на этом пути, вы удалите все это и начнете снова. Или создайте свою собственную логику, чтобы войти и понять, почему. Единственное, что Azure будет делать в случае сбоя, - сообщить об этом вам. Тогда вам решать, как вы будете реагировать на это.

Мой личный подход заключается в развертывании базовых строительных блоков с помощью шаблонов (так, например, в виртуальных машинах, хранилищах и т. Д.), А затем с помощью механизма управления конфигурацией используются более сложные задачи развертывания программного обеспечения и определения конфигурации. Что-то, что имеет интеллект, чтобы отбросить назад и восстановить их.

+0

ARM шаблоны идемпотентны, а это означает, что вы можете повторно развернуть тот же сценарий, сразу же после первоначального развертывания, и вы получите тот же результат (без изменений). Если вы решите добавить еще одну виртуальную машину в свой шаблон и повторно развернуться, существующие виртуальные машины останутся, и новый будет добавлен. – Lewis

+0

@ Проблема в том, что результаты качения модифицированного шаблона в существующей инфраструктуре несовместимы. Не всегда ясно, что будет изменено и что будет проигнорировано. Кажется, что Azure проверяет наличие ресурса верхнего уровня (то есть VM, но игнорирует любые параметры свойств, такие как дополнительные диски и т. Д.). Итак, да, вы можете добавить виртуальную машину, но что-то более тонкое, чем это, и вы собирается столкнуться с проблемами –

0

Это то, что я собрал. Это может помочь, но в основном вы должны выбросить свою собственную ошибку, поскольку результат тестирования-AzureRmResourceGroupDeployment является нулевым для успеха, но имеет объект, когда он терпит неудачу.

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") 

Приветствие

Льюиса

Смежные вопросы