Що таке Terraform?

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

Terraform активно використовується та підтримується великою спільнотою. На ринку праці спостерігається високий попит на фахівців зі знанням Terraform та інших інструментів IaC.

Працюєш із Terraform чи тільки плануєш вивчати? Отже, цей огляд саме для тебе.


Визначення Terraform

Terraform — це інструмент із відкритим вихідним кодом для керування інфраструктурою за підходом Infrastructure as Code (IaC). 

Мета Terraform — зробити інфраструктуру прозорою, керованою та передбачуваною. Замість ручного налаштування сервісів створюєш конфігураційні файли, які описують все потрібне: від віртуальних машин до баз даних. Далі Terraform автоматично застосовує ці налаштування.

Історія створення

Terraform створила американська компанія HashiCorp, яка також розробила інші популярні DevOps-інструменти, як-от Vagrant, Consul та Vault.

У 2014 році вийшов перший реліз Terraform, і з того часу він став одним із ключових інструментів для автоматизації інфраструктури. 

У 2019 році була представлена платна версія Terraform Enterprise. Відтоді інструмент постійно оновлюється, отримує нові фічі та підтримку все більшої кількості хмарних платформ. У звіті State of IaC за 2023 рік Terraform описується одним із найпопулярніших інструментів для керування хмарними ресурсами. 

Основні принципи роботи  

[1] Опис інфраструктури як коду (Infrastructure as Code)
Terraform описує інфраструктуру у вигляді конфігураційних файлів. Це значить, що ти можеш зберігати ці файли в репозиторії, легко відстежувати зміни, проводити рев’ю й відновлювати попередні версії. 

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

Переваги Infrastructure as Code

  • Краще управління витратами.
  • Підвищена надійність.
  • Краща узгодженість і масштабованість.
  • Поліпшений процес розгортання.
  • Покращені стратегії безпеки.

[2] Використання конфігураційних файлів (HCL — HashiCorp Configuration Language)
Terraform використовує власну мову конфігурацій — HCL (HashiCorp Configuration Language). Завдяки HCL ти можеш зберігати конфігурації в репозиторії, редагувати їх, перевіряти перед запуском та повторно застосовувати для створення інфраструктури в різних середовищах.

Компоненти інфраструктури, якими керує Terraform, називаються ресурсами. Це можуть бути віртуальні машини, таблиці баз даних, бакети в S3, VPC (віртуальні приватні мережі) та інше. 

Кожен ресурс описується окремим блоком у HCL, де вказуються його параметри та налаштування.

Нижче наведено простий приклад опису ресурсу для створення VPC:

resource “aws_vpc” “default_vpc” { 

    cidr_block = “172.31.0.0/16” 

    tags = { 

        Name = “example_vpc” 

} }

[3] Процес створення та управління інфраструктурою
Алгоритм роботи Terraform охоплює такі етапи:

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

Ключові можливості

[1] Управління хмарною інфраструктурою

Terraform працює з найпопулярнішими хмарними платформами: Amazon Web Services, Microsoft Azure, IBM Cloud, Google Cloud Platform, DigitalOcean, Oracle Cloud, VMware vSphere та OpenStack.

[2] Підтримка різних провайдерів

Провайдери — це плагіни, які дозволяють Terraform взаємодіяти з API сервісів. Є провайдери не лише для хмар, а й для GitHub, Kubernetes, DNS, баз даних, CI/CD.

[3] Автоматизація розгортання та масштабування

Можна створити шаблони, за якими автоматично розгортатимуться середовища з десятками ресурсів, наприклад, для staging або production. А ще легко змінювати масштаб — додавати/видаляти ресурси одним рядком коду.

[4] Terraform складається з двох компонентів: ядра (Terraform Core) і плагінів.

Ядро відповідає за керування життєвим циклом інфраструктури. Це виконуваний файл з відкритим вихідним кодом, який завантажується та використовується через командний рядок.


Плагіни Terraform забезпечують механізм для зв’язку Terraform Core із хостом інфраструктури або постачальниками SaaS.

Принципи роботи з Terraform

/ Створення, зміна та видалення ресурсів

Terraform визначає, які ресурси потрібно створити, змінити чи видалити, порівнюючи поточну інфраструктуру зі зміненим кодом.

/ Використання команд

Основні команди:

  • terraform init — ініціалізація конфігурації;
  • terraform plan — попередній перегляд змін;
  • terraform apply — застосування змін;
  • terraform destroy — видалення ресурсів.

/ Управління станом інфраструктури

Terraform зберігає інформацію про створені ресурси у файлі стану (terraform.tfstate).

Використання в командних проєктах

/ Спільна робота через репозиторії

Конфігурації зберігаються у репозиторіях (наприклад, GitHub), що дає змогу кільком спеціалістам працювати з однією інфраструктурою, створювати pull request та перевіряти зміни перед розгортанням.

/ Впровадження змін та контроль версій

Уся інфраструктура під контролем версій: легко побачити, хто й коли щось змінив. За потреби — повернутись до попереднього варіанту. 

Порівняння з іншими інструментами

Деякі інструменти виконують схожі функції з Terraform, тож їх часто розглядають у порівнянні.

Важливо розуміти, що Terraform зосереджений на створенні та управлінні інфраструктурою. А такі інструменти, як Ansible, Chef або Puppet відповідають за налаштування програмного забезпечення після створення інфраструктури.

На практиці ці інструменти не конкурують, а доповнюють один одного. Наприклад, за допомогою Terraform можна створити віртуальну машину у хмарі, а потім налаштувати її за допомогою Ansible. Такий підхід дозволяє отримати повністю контрольований і передбачуваний процес розгортання.

Корисні джерела

[1] Офіційна документація Terraform — це основне джерело знань для всіх, хто працює з інструментом, від початківців до досвідчених DevOps-фахівців. Вона структурована, регулярно оновлюється та охоплює всі аспекти роботи з Terraform.

У документації можна знайти:

  • опис HCL (HashiCorp Configuration Language);
  • приклади використання ресурсів та провайдерів;
  • інструкції зі встановлення та запуску інструменту;
  • пояснення принципів роботи Terraform: планування, застосування, зберігання стану тощо;
  • офіційні модулі та плагіни з прикладами інтеграції.

[2] Terraform також має активну спільноту, яка підтримує офіційні репозиторії, публікує корисні гайди та розширення. Для глибшого занурення доступні навчальні курси, туторіали, блоги й відео від HashiCorp та спільноти.На курсі DevOps з нуля ти навчишся працювати з Terraform, тож переходь за лінком та прокачуй нові навички.

Залишити відповідь

Дякуємо, що поділились