Terraform — один из самых удобных способов управлять инфраструктурой как кодом. Вместо ручной настройки серверов, сетей и сервисов в консоли Яндекс Cloud вы описываете всё в конфигурации, а затем разворачиваете одной командой. Это ускоряет запуск, снижает риск ошибок и упрощает поддержку среды. 🚀
Что такое Infrastructure as Code
- инфраструктура описывается в
.tfфайлах - изменения проходят через версионирование в Git
- одинаковые окружения можно воспроизводить многократно
- rollback и аудит становятся проще
Что нужно для старта в Яндекс Cloud
- аккаунт в Яндекс Cloud
- облачный каталог и сервисный аккаунт
- OAuth-токен или авторизованный ключ
- установленный Terraform
- ID облака, каталога и зоны доступности
Обычно провайдер Яндекс Cloud подключается так:
terraform {
required_providers {
yandex = {
source = "yandex-cloud/yandex"
}
}
}
provider "yandex" {
cloud_id = "ваш_cloud_id"
folder_id = "ваш_folder_id"
zone = "ru-central1-a"
}
Пример: создаём виртуальную машину
Сначала описываем сеть и подсеть, затем — сам инстанс:
resource "yandex_vpc_network" "network" {
name = "tf-network"
}
resource "yandex_vpc_subnet" "subnet" {
name = "tf-subnet"
zone = "ru-central1-a"
network_id = yandex_vpc_network.network.id
v4_cidr_blocks = ["10.10.0.0/24"]
}
resource "yandex_compute_instance" "vm" {
name = "tf-vm"
resources {
cores = 2
memory = 2
}
boot_disk {
initialize_params {
image_id = "fd8..."
}
}
network_interface {
subnet_id = yandex_vpc_subnet.subnet.id
nat = true
}
metadata = {
ssh-keys = "ubuntu:${file(\"~/.ssh/id_rsa.pub\")}"
}
}
Основные команды Terraform
terraform init— инициализация проектаterraform validate— проверка синтаксисаterraform plan— просмотр измененийterraform apply— применение конфигурацииterraform destroy— удаление ресурсов 🧩
Почему это полезно
- быстрое развертывание dev/test/prod
- единый стандарт инфраструктуры в команде
- меньше ручной рутины
- удобная автоматизация через CI/CD
Типичные ошибки новичков
- хранение секретов прямо в
.tfфайлах - отсутствие remote state
- использование жёстко заданных ID вместо переменных
- запуск
applyбез проверкиplan - отсутствие модулей при росте проекта 🔐
Практический совет
Для реальных проектов выносите параметры в variables.tf, разделяйте окружения и храните state централизованно. Так Terraform в Яндекс Cloud становится не просто инструментом развёртывания, а полноценной системой управления инфраструктурой. 🛠️
Подборку каналов про IT стоит посмотреть тем, кто хочет глубже разобраться в DevOps, облаках и автоматизации.