DevOps та хмари
Що таке Terraform?
Terraform — це інструмент, який створює хмарну інфраструктуру за описом у файлах конфігурації. Ви вказуєте, які ресурси мають існувати, а Terraform сам визначає, що треба створити, змінити чи видалити, щоб хмара відповідала опису.
Підхід декларативний: ви описуєте результат, а не послідовність команд. Перед застосуванням Terraform показує план — список майбутніх змін, — і це значно зменшує ризик випадково видалити робочий ресурс.
Terraform працює з AWS, Azure, Google Cloud і десятками інших провайдерів через єдину мову конфігурації HCL. Поточний стан інфраструктури зберігається у файлі стану (state), який у командній роботі тримають у спільному захищеному сховищі.
Де застосовується
Terraform створює і змінює ресурси в хмарі: віртуальні машини, мережі, бази даних, балансувальники навантаження, права доступу. Одна конфігурація працює з AWS, Azure, Google Cloud та іншими провайдерами, тому Terraform зручний для компаній, які використовують кілька хмар одночасно.
Зазвичай Terraform вбудований у конвеєр CI/CD: інженер змінює файл конфігурації, створює запит на злиття, команда переглядає план змін — що буде створено, змінено і видалено, — і лише після схвалення зміни застосовуються до реальної інфраструктури.
Приклад
Треба додати другий сервер застосунку і підключити його до балансувальника. Інженер змінює одне число в конфігурації, запускає план і бачить: один ресурс буде створено, один змінено, жодного не видалено. Після підтвердження інфраструктура сама переходить у новий стан.
resource "aws_s3_bucket" "uploads" {
bucket = "school-uploads"
}
resource "aws_instance" "api" {
count = 2
ami = "ami-0abcdef1234567890"
instance_type = "t3.small"
tags = {
Name = "api-${count.index}"
}
}
Часті запитання
Що таке state у Terraform?
Це файл стану, у якому записано, які ресурси вже створені і як вони пов’язані з конфігурацією. Без нього Terraform не знає, що змінювати, а що створювати заново. У команді файл стану зберігають віддалено з блокуванням, щоб двоє людей не застосовували зміни одночасно.
Чим Terraform відрізняється від Ansible?
Terraform створює саму інфраструктуру: сервери, мережі, бази даних. Ansible налаштовує те, що вже створено: встановлює пакети, змінює налаштування, розгортає застосунки. Вони не конкурують і часто працюють разом, кожен на своєму етапі.
Чи можна випадково видалити продакшен через Terraform?
Теоретично так, тому перед застосуванням завжди переглядають план змін. Крім того, на критичні ресурси ставлять захист від видалення, розділяють середовища на окремі конфігурації і вимагають перевірки змін колегами. Застосування без читання плану — головна причина аварій.
Що таке OpenTofu?
Це відгалуження Terraform із відкритою ліцензією, яке з’явилося після зміни умов ліцензії оригіналу. Синтаксис і робочий процес однакові, тому перехід зазвичай зводиться до заміни команди. Частина компаній перейшла на OpenTofu, щоб уникнути ліцензійних обмежень.
Навчання DevOps в OWU
Опануйте професію DevOps-інженера на практичних курсах із менторами та реальними проєктами.
Обрати курс