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

IaC дає змогу описувати інфраструктуру у файлах, які можна зберігати в системах керування версіями, повторно використовувати, перевіряти, рецензувати та застосовувати автоматизовано. Такий підхід часто використовується в DevOps, хмарних обчисленнях, автоматизації розгортання та керуванні середовищами розробки, тестування і продуктивної експлуатації.

Інфраструктура як код може застосовуватися як до віртуальних машин, контейнерів, мереж, балансувальників навантаження, сховищ даних і DNS-записів, так і до фізичних серверів або ресурсів локальних центрів обробки даних. Наприклад, Terraform описує хмарні й локальні ресурси в конфігураційних файлах, які можна версіонувати, повторно використовувати й застосовувати протягом життєвого циклу інфраструктури.

Підходи У практиці IaC зазвичай розрізняють два основні підходи:

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

Декларативний підхід характерний для таких інструментів, як Terraform, AWS CloudFormation, Azure Resource Manager і Bicep. Наприклад, Bicep використовує декларативний синтаксис для опису ресурсів Azure, які потім можна багаторазово розгортати узгодженим способом.

Призначення Інфраструктура як код використовується для:

автоматизації створення і зміни інфраструктури; повторюваного розгортання однакових середовищ; зменшення кількості ручних помилок; документування інфраструктури у вигляді коду; рецензування змін через pull request або подібні механізми; зберігання історії змін в системах керування версіями; швидкого відтворення середовищ розробки, тестування або продуктивної експлуатації.

Зв'язок з IaaS IaC часто використовується разом з інфраструктурою як послугою (IaaS), оскільки хмарні платформи надають API для створення і зміни ресурсів. Проте ці поняття не є тотожними. IaaS — це модель надання інфраструктурних ресурсів як послуги, тоді як IaC — це спосіб опису, автоматизації та керування такими ресурсами.

Інструменти До поширених інструментів і сервісів, пов'язаних з інфраструктурою як кодом, належать:

AWS CloudFormation — сервіс AWS для моделювання, постачання й керування ресурсами AWS та сторонніми ресурсами як кодом; Terraform — інструмент для опису, створення, зміни й версіонування хмарної та локальної інфраструктури; Ansible — інструмент автоматизації, який може використовуватися для конфігураційного керування та розгортання інфраструктури; Azure Resource Manager і Bicep — засоби опису та розгортання ресурсів Microsoft Azure; Google Cloud Deployment Manager — сервіс для опису й розгортання ресурсів Google Cloud; Puppet; ; Pulumi; Vagrant; .

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

Див. також DevOps Хмарні обчислення Інфраструктура як послуга Автоматизація Система керування версіями Конфігураційне керування

Примітки