Phone icon Зв'язатись з нами

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-інженера на практичних курсах із менторами та реальними проєктами.

Обрати курс