Viji
@Viji
Associate DevOps Engineer

Как уменьшить риски потери инфраструктуры при использовании Terraform?

Здравствуйте,

встречал мнение. что использования Terraforma для автоматического добавления или модификации инфраструктуры в продакшене может быть рискованным, так как иногда приводит к полному удалению уже существующих сервисов?

кто-то может поделилиться так ли это и как уменьшить эти риски?

спасиб,
Вадим
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
Потерять можно все при любом действии и любым продуктом.
Терраформ просто позволяет сделать это .. красиво и очень удобно, если вы хреново его спланировали.
Правило 1: используйте автоприменение только в тех местах где не жалко или где вы железобетонно уверены(и берете риски на себя)
Правило 2: валидируйте план. Хотя бы глазами
Вообще, есть у некоторых людей практика делать план в файл, валидировать его какой то внешней логикой, и при успешной валидации применять план из файла, не просчитывая его заново (он делается при каждом апплае) с автоподтверждением. Мне не нравится, да и терраформ честно предупреждает что на момент реального применения ситуация может отличаться и менять придется совсем другие элементы.
Правило 3: разноси элементы по логическим слоям, чтобы уменьшить зону поражения при гибельном апплае. Например настройки сети а одной папке со своим стейтом, запуск приложения - в другой. И связывайте через ремоут стейт. Главное соблюдать меру, чтобы каждую, скажем , security group в aws не создавать в отдельных слоях.
Правило 4: используйте модули, если применение логической группы ресурсов используется более одного раза. Тут тоже не стоит плодить модули на каждый ресурс и подходить разумно.
Правило 5: тестируйте изменения! (Используя одни и те же модули для стейжа и прода). Логично предположить что если вы снесли стейж то и прод снесется.
Правило 6: используйте vcs для работы с кодом терраформ (для того чтобы откатывать код для восстановления убитого стейжа например)
Правило 7: используйте lifecycle политики Prevent destroy на ресурсах, чтобы запрещать из убиение
Помидор 7.1: используйте ignore changes там где это нужно
Правило 8: используйте правильный инструмент для того что вы хотите сделать. Терраформ умеет много чего, но конфигурейшн менеджер он не заменит, хотя по функциям они чуть да пересекаются.

В принципе, если продолжать я могу до штук 20 дойти полезных советов, но на 90% мои правила, по сути - используйте для работы с кодом терраформ те же правила что и для работы с любым другим кодом - снимете 70% проблем. Остальные будут связаны с особенностью работы терраформ и радиусом кривизны рук автора терраформ кода.

P.S. пишу на ходу в метро, орфографию и пунктуацию правит т9. Спрашивайте, вдруг заметите какой нибудь термин, который я писать не собирался :D
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise Куратор тега Amazon Web Services
Solution Architect, AWS Certified, Serverless
Курим что такое terraform plan, учимся это валидировать и аппрувить
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 07:47
2000 руб./за проект
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект