Магия "у меня локально всё работает".
Пишет мне мой приятель, у которого я какое-то короткое время менторил(а такое слово вообще есть?)
"Алекс, Алекс, спасити памагити, у меня беда".
Сегодня он вносил небольшие правки в терраформ.
Запустил план на дев, на стейдж, на прод - все ок.
Аппрув, мерж в мастер и.. а терраформ план и апплай перенакатывает ему виртуалку с ec2🐒
Я помог ему восстановить сервис(вне этой заметки, отдельная стори и причина звонка), а затем мы начали разбираться, а как так вышло то, эй.
Шарит экран, говорит вот локально с мастера делаю план на дев, стейдж, проде, - всё ок.
Выдохнув, спрашиваю, а что ты знаешь про
version constraints у терраформа?Ну он, конечно же, ничего не знал.
Скидываю ему пример
= X.Y.Z - точная версия: version = "= 4.0.0" (только 4.0.0).
>= X.Y.Z - минимум и выше: version = ">= 4.0.0" (4.0.0 и выше).
<= X.Y.Z - максимум и ниже: version = "<= 4.0.0" (до 4.0.0 включительно).
> X.Y.Z - выше указанной: version = "> 4.0.0" (4.0.1 и выше).
< X.Y.Z - ниже указанной: version = "< 4.0.0" (до 4.0.0, не включая).
~> X.Y - в пределах мажорной: version = "~> 4.0" (4.0.x, но не 5.0).
>= X.Y.Z, < X.Y.Z - диапазон: version = ">= 4.0.0, < 5.0.0" (4.x.x, но не 5.x.x).
Смотрим его код, а там есть
...
version = ">= 5.0"
...
Лезем в
https://github.com/hashicorp/terraform-provider-aws/releases/tag/v6.0.0
охреневаем от брейкинг чейнджевПриятель пилит сам у себя все версии в лок, проблема решена.
Он проверял локально и провайдер брался из
кеша - проблемы не видел.В CI/CD при каждом запуске запускался
terrafrom init, что подтянул ему новую версию, которая триггернула пересоздание виртуалки. Дальше была проверка всего кода
tflint, checkov и другими утилитами, нашли ещё 4 места, где версии были плавающими, поправили и это.Ну зато узнал что-то новое, чо.
