DevOps та хмари
Що таке Infrastructure as Code (IaC)?
Infrastructure as Code (IaC, інфраструктура як код) — це підхід, за якого сервери, мережі, бази даних і права доступу описують у файлах конфігурації, а потім створюють автоматично за цим описом, замість ручного налаштування через вебінтерфейс хмари.
Інфраструктура, налаштована вручну, з часом розходиться: тестове середовище відрізняється від робочого, а точний порядок дій пам’ятає лише одна людина. Опис у коді прибирає цю невизначеність — середовище можна створити заново будь-коли.
Оскільки конфігурація — це файли, до неї застосовують звичайні практики розробки: зберігання в Git, історію змін, перевірку колегою перед застосуванням, автоматичні перевірки в CI/CD. Основні інструменти — Terraform, Ansible, Pulumi та рішення від хмарних провайдерів.
Де застосовується
IaC використовують усюди, де інфраструктура складніша за один сервер. Описи зберігаються в тому ж репозиторії, що й код застосунку, проходять перевірку і потрапляють у хмару через конвеєр збірки — так само, як звичайні зміни в програмі.
Користь особливо помітна у трьох ситуаціях: коли треба створити ідентичний тестовий стенд, відновити все після аварії або зрозуміти, хто і навіщо змінив налаштування місяць тому. Якщо все налаштовували вручну через вебконсоль, швидких відповідей на ці питання немає.
Приклад
Команді потрібен окремий стенд для навантажувального тестування — точна копія робочого середовища. Коли інфраструктура описана кодом, це одна команда і п’ятнадцять хвилин очікування. Після тестів стенд повністю видаляють, і платити за нього більше не треба.
Часті запитання
Чим IaC краще за налаштування через вебконсоль хмари?
Повторюваністю та історією. Опис зберігається в системі контролю версій: видно, хто і що змінював, можна повернутися до попереднього стану і створити таке саме середовище заново. Ручні дії ніде не записуються, і через пів року ніхто не пам’ятає, чому налаштовано саме так.
Чим відрізняються декларативний та імперативний підходи?
Декларативний описує, яким має бути результат, а інструмент сам визначає кроки — так працюють Terraform і Kubernetes. Імперативний задає послідовність дій, як звичайний скрипт. Декларативний надійніший: повторний запуск не ламає вже створене.
Які інструменти використовують для IaC?
Terraform і OpenTofu — для створення хмарних ресурсів, Ansible — для налаштування серверів, Pulumi — для опису інфраструктури звичайною мовою програмування, CloudFormation — в екосистемі AWS. Часто їх поєднують: один створює ресурси, інший їх налаштовує.
Де зберігати паролі та ключі при такому підході?
Тільки не у файлах конфігурації: вони потрапляють у репозиторій і назавжди залишаються в історії. Секрети зберігають в окремих сховищах — Vault, менеджерах секретів хмари, захищених змінних конвеєра — і підставляють під час застосування.
Навчання DevOps в OWU
Опануйте професію DevOps-інженера на практичних курсах із менторами та реальними проєктами.
Обрати курс