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

Що таке Terraform?

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

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

Інструмент працює з AWS, Azure, Google Cloud і десятками інших провайдерів через єдину мову конфігурації HCL. Поточний стан інфраструктури зберігається у state-файлі, який у командній роботі розміщують у спільному захищеному сховищі.

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

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

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

Приклад

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

resource "aws_s3_bucket" "uploads" {
  bucket = "progacademy-uploads"
}

resource "aws_instance" "api" {
  count         = 2
  ami           = "ami-0abcdef1234567890"
  instance_type = "t3.small"

  tags = {
    Name = "api-${count.index}"
  }
}
Опис ресурсу: ви задаєте бажаний стан, а Terraform обчислює, що для цього зробити.

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

Що таке state у Terraform?

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

Чим Terraform відрізняється від Ansible?

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

Чи можна випадково видалити продакшен командою Terraform?

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

Що таке OpenTofu?

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

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