Prog Academy
RU UA
DevOps та хмари

Що таке Infrastructure as Code (IaC)?

Infrastructure as Code — підхід, за якого сервери, мережі, бази та права доступу описуються в конфігураційних файлах і створюються автоматично за цим описом, замість ручного налаштування через вебінтерфейс хмари.

Інфраструктура, зібрана руками, з часом розходиться: тестове оточення відрізняється від продакшену, а точний порядок дій памʼятає одна людина. Опис у коді прибирає цю невизначеність — оточення можна перестворити з нуля будь-якої миті.

Оскільки конфігурація — це файли, до неї застосовні всі звичні практики розробки: зберігання в Git, історія змін, код-рев'ю перед застосуванням, автоматична перевірка в CI/CD. Інструменти — Terraform, Ansible, Pulumi та аналоги від хмарних провайдерів.

Де застосовується

Підхід застосовують скрізь, де інфраструктура складніша за один сервер. Описи лежать у тому ж репозиторії, що й код застосунку, проходять рев'ю і потрапляють у хмару через складальний конвеєр — так само, як звичайні правки у програмі.

Практична вигода видна у трьох ситуаціях: підняти ідентичний тестовий стенд, відновити все після аварії і зрозуміти, хто і навіщо змінив налаштування місяць тому. За ручного налаштування через вебконсоль жодне з цих питань не має швидкої відповіді.

Приклад

Команді потрібен окремий стенд для навантажувального тестування — точна копія продакшену. З описаною інфраструктурою це одна команда і пʼятнадцять хвилин очікування; після тестів стенд видаляється цілком, і оплата припиняється.

Часті запитання

Чим це краще за налаштування через вебконсоль хмари?

Повторюваністю та історією. Опис лежить у системі контролю версій: видно, хто і що змінював, можна відкотитися і створити таке саме оточення заново. Ручні кліки ніде не фіксуються, і через пів року ніхто не памʼятає, чому налаштування саме таке.

Чим відрізняються декларативний та імперативний підходи?

Декларативний описує бажаний результат, а інструмент сам обчислює кроки — так працюють Terraform і Kubernetes. Імперативний задає послідовність дій, як звичайний скрипт. Перший стійкіший: повторний запуск не ламає те, що вже створено.

Які інструменти використовують для IaC?

Terraform і OpenTofu для створення хмарних ресурсів, Ansible для налаштування серверів, Pulumi для опису інфраструктури звичайною мовою програмування, CloudFormation в екосистемі AWS. Часто їх комбінують: один створює ресурси, інший налаштовує їхній вміст.

Де зберігати паролі та ключі за такого підходу?

Тільки не в самих файлах конфігурації: вони потрапляють у репозиторій і лишаються в історії назавжди. Секрети тримають в окремих сховищах — Vault, менеджерах секретів хмари, захищених змінних конвеєра — і підставляють у момент застосування.

Повʼязані терміни