Terraform: инфраструктура как код
Если серверы и облако настраивают руками — окружения «расползаются». Terraform описывает инфраструктуру декларативно: изменения проходят reиvieuw как код и применяются одинаково в любой среде.
Декларативное описание
# main.tf — объявляем «что должно быть», а не «как»
terraform {
required_providers {
digitalocean = { source = "digitalocean/droplet", version = "~> 2.0" }
}
}
resource "digitalocean_droplet" "app" {
name = "web"
region = "fra1"
size = "s-1vcpu-1gb"
image = "ubuntu-22-04-x64"
}
Цикл жизни
terraform init # скачать провайдеры и модули
terraform plan # показать: что создастся/изменится/удалится
terraform apply # применить изменения
terraform destroy # убрать всё, что описано в конфиге
💡
plan — ваш лучший друг: перед apply смотрим диф объявления, как перед git push. Шаг «а что это поменяет?» убирает 90% случайных изменений.
Зачем это команде
- оwnи окружения (dev/stage/prod) описываются одним кодом с разными значениями;
- правки инфраструктуры — в репозитории, с review и историей (урок 47);
- территорию можно пересоздать за пару команд — «снос и подъём» перестают пугать;
- вакансии: «умею Terraform» — сильный плюс к DevOps-профилю.
ℹ️
Terraform — стандарт, но не единственная система: есть Pulumi (языки программирования) и облачные специфики (CloudFormation). Идея та же: инфраструктура — это код.