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