DevOps не горит: post #105 — TG.ME

Terragrunt и обработка ошибок
Коллеги, всем привет! =)
Иногда, а именно когда мы раскатываем инфраструктуру пепелайном с terragrunt/terraform, мы можем столкнуться с ошибками. Конечно же ошибки нужно фиксить системно, но всегда это быстро или возможно в принципе. По этому приходится что-то придумывать.
Для связки pipeline+terragrunt/terraform можно выделить 2 типа ошибок:
1 - мы не можем поработать со стейтом, провайдером, модулем, api инфры
2 - что-то уж совсем не так с api инфры
Проблемы под номером “РАЗ” вполне себе могут решаться ретраем, сделать это можно двумя способами:
— используя утилиту retry (да, оно будет работать, но бинарь придется собирать самостоятельно и ретрай будет всегда когда exit code ≠ 0, что не всегда удобно)
— используя встроенный обработчик ошибок terragrunt (это вариант нам как раз и подходит, так как работать с ошибками можно достаточно гранулярно)
На практике нам достаточно добавить блок errors в привыйный нам terragrunt.hcl
Пример:

errors {
retry "source_fetch" { #имя ошибки
retryable_errors = [".*Error refreshing state: .*"] #регулярка для поиска конкретной ошибки
max_attempts = 3 #количество ретраев
sleep_interval_sec = 5 #ожидание между ретраями
}
}

В конфигурацию мы можем добавить ретраи для нескольких ошибок или написать мега регулярку. Обязательно стоит помнить что использовать .* в случае инфры может быть не самой лучшей затеей
Enjoy =)
PS - да, да, я снова пишу редко, как говорит мой батя “То пьянка, то партсобрание”
PSS - в ближайшие пару дней будет несколько анонсов =)
🔥11👍6
September 2, 2025 827 1