Terraform
Инструмент «инфраструктура как код»: серверы, сети и базы данных описываются в файлах, а Terraform создает и меняет их в облаке сам.
Terraform — инструмент для подхода «инфраструктура как код» (Infrastructure as Code). Вместо того чтобы создавать серверы, сети и базы данных вручную в панели облака, их описывают в текстовых файлах. Terraform читает описание, сравнивает с тем, что уже есть, и создает, изменяет или удаляет ресурсы, чтобы реальность совпала с описанием. Инструмент выпустила компания HashiCorp в 2014 году.
Пример
# HCL (Terraform)
resource "yandex_compute_instance" "app" {
name = "billing-app"
resources {
cores = 2
memory = 4
}
boot_disk {
initialize_params {
image_id = var.ubuntu_image_id
}
}
network_interface {
subnet_id = yandex_vpc_subnet.main.id
nat = true
}
}
Описание виртуальной машины в Yandex Cloud: 2 ядра, 4 ГБ памяти, диск с Ubuntu, подключение к подсети. Нужно 8 ГБ памяти — меняют одну цифру, и Terraform изменит машину.
Как работает
terraform planпоказывает, что будет создано, изменено и удалено. Этот план проверяют, как код-ревью.terraform applyвыполняет изменения через API облака.- Terraform запоминает созданное в файле состояния (state), чтобы в следующий раз понимать, что уже существует. Этот файл хранят в общем защищенном хранилище, а не на ноутбуке.
С разными облаками и сервисами Terraform работает через провайдеры: Yandex Cloud, VK Cloud, AWS, а также Kubernetes, DNS-сервисы, системы мониторинга.
Зачем это нужно
- Воспроизводимость. Тестовая среда создается копией рабочей одной командой и так же удаляется.
- История изменений. Файлы лежат в Git: видно, кто, когда и зачем изменил инфраструктуру.
- Меньше ручных ошибок. Нет «забытой галочки» в панели облака, о которой знает один администратор.
- Автоматизация. Изменения инфраструктуры проходят через тот же конвейер CI/CD, что и код.
Лицензия и доступность
В 2023 году HashiCorp перевела Terraform на лицензию, ограничивающую коммерческое использование конкурентами, и сообщество под крылом Linux Foundation создало совместимый открытый форк OpenTofu. Загрузка Terraform и провайдеров с серверов HashiCorp из России ограничена, поэтому используют зеркала российских облаков или OpenTofu — описания инфраструктуры при этом не меняются.
Подводные камни
Ручные изменения в панели облака в обход Terraform расходятся с описанием, и следующий запуск может их откатить. Файл состояния содержит секреты и должен быть защищен. А ошибочный план способен удалить базу данных, поэтому изменения проверяют глазами и защищают важные ресурсы от удаления.