#azure #terraform #github-actions #subnet
Вопрос:
Я использую terraform для создания среды, запуска теста и уничтожения среды после успешного завершения теста. Этот процесс выполняется 5 дней в неделю, и мы используем GitHub action runner для выполнения теста. Среда создается в azure с использованием terraform.
Недавно я получил сообщение об ошибке на этапе уничтожения терраформа от Azure, подобное этому. Error: Error deleting Subnet "subnet" (Virtual Network "network" / Resource Group "ResourceGroupName"): network.SubnetsClient#Delete: Failure sending request: StatusCode=404 -- Original Error: Code="ResourceNotFound" Message="The Resource 'Microsoft.Network/virtualNetworks/network' under resource group 'ResourceGroupName' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix"
Фаза уничтожения терраформирования выполняется командой terraform destroy -auto-approve -var "resource_group_name=${RESOURCE_GROUP_NAME}"
Проблема, как я обнаружил из журналов, заключается в том, что запрос на удаление подсети не выполняется, а запросы на удаление другого ресурса, включая группу ресурсов, выполняются и завершаются, не дожидаясь завершения запроса на удаление подсети. При запросе в службу поддержки Azure по этому поводу они ответили, что подсеть использовалась и, следовательно, привела к ошибке. Они предложили удалить все ресурсы внутри виртуальной сети, а затем приступить к удалению самой виртуальной сети и добавить задержки между этими операциями.
Поскольку скрипт выполняет только команду уничтожить терраформу для уничтожения ресурсов, передавая имя группы ресурсов, я не уверен, можно ли здесь что-нибудь сделать. Существуют ли какие-либо другие решения этой проблемы, кроме добавления команд для удаления ресурсов по отдельности, а не с помощью одной команды? Пожалуйста, обратите внимание, что эта проблема возникает не часто и в последнее время встречается примерно 5 раз в 20 тестовых запусках в месяц. Заранее спасибо.
Комментарии:
1. может быть, вы могли бы просто добавить механизм повторных попыток? (например, уничтожить его дважды) В противном случае было бы хорошо, если бы вы могли поделиться частью кода TF.