Skip to content
EN

Что такое Terraform

Коротко:

Terraform — Infrastructure as Code tool от HashiCorp (2014). Пишете desired state cloud resources в HCL (HashiCorp Configuration Language), terraform apply creates/updates. Supports AWS, GCP, Azure, Yandex Cloud, Cloudflare, GitHub — через 3000+ providers. Август 2023: HashiCorp сменил license с MPL на BSL (Business Source License) → community fork **OpenTofu** (Linux Foundation, 100% compatible).

Ниже: подробности, пример, смежные термины, FAQ.

Проверить свой сайт →

Подробности

  • HCL: JSON-like syntax для resource definitions
  • State file: tracks real resources (local или remote S3 + DynamoDB lock)
  • Providers: AWS, GCP, Cloudflare, GitHub, Vault, Helm — через terraform registry
  • Modules: reusable chunks (VPC module, K8s cluster module)
  • OpenTofu: fork после BSL — compatible, Linux Foundation

Пример

# AWS EC2 instance
resource "aws_instance" "web" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t3.small"
  tags = { Name = "WebServer" }
}

# Remote state в S3
terraform {
  backend "s3" {
    bucket = "tfstate"
    key    = "prod/terraform.tfstate"
    region = "us-east-1"
  }
}

Смежные термины

TL;DR: Что такое Terraform?

Terraform — это инструмент для управления инфраструктурой как кодом (IaC), который позволяет описывать и развертывать инфраструктуру с помощью конфигурационных файлов. Он поддерживает множество провайдеров облачных услуг, таких как AWS, Azure и Google Cloud. С помощью Terraform можно управлять ресурсами, используя команды, такие как terraform init, terraform plan и terraform apply, что упрощает процесс автоматизации и версионирования инфраструктуры.

Основные концепции Terraform

Terraform работает на основе нескольких ключевых концепций, которые помогают управлять инфраструктурой эффективно.

  • Конфигурационные файлы: Terraform использует язык конфигурации HashiCorp Configuration Language (HCL) для описания ресурсов. Эти файлы имеют расширение .tf.
  • Провайдеры: Terraform поддерживает различные облачные провайдеры и другие сервисы через провайдеры, которые необходимо установить и настроить. Например, для работы с AWS нужно использовать provider "aws" {}.
  • Ресурсы: Основные строительные блоки в Terraform, которые описывают необходимые элементы инфраструктуры, такие как aws_instance для создания виртуальной машины в AWS.
  • Состояние: Terraform хранит состояние инфраструктуры в файле состояния, что позволяет отслеживать изменения и управлять инфраструктурой с учетом текущего состояния.

Практический пример использования Terraform

Рассмотрим практический пример создания виртуальной машины в AWS с помощью Terraform. Для этого создадим файл main.tf с следующим содержимым:

provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe01e"
  instance_type = "t2.micro"

  tags = {
    Name = "ExampleInstance"
  }
}

В этом примере мы указываем провайдер AWS и создаем ресурс aws_instance с определенным AMI и типом инстанса. После создания файла необходимо выполнить следующие команды:

  1. terraform init — инициализация рабочего каталога Terraform и загрузка необходимых провайдеров.
  2. terraform plan — просмотр запланированных изменений, которые будут применены к инфраструктуре.
  3. terraform apply — применение изменений, создание виртуальной машины в AWS.

После выполнения этих команд Terraform создаст виртуальную машину с указанными параметрами. Это демонстрирует, как легко управлять инфраструктурой с помощью кода, что позволяет ускорить процесс развертывания и минимизировать ошибки.

Больше по теме

Часто задаваемые вопросы

Terraform или OpenTofu?

OpenTofu: free, MPL license, Linux Foundation. Terraform: BSL (некоммерческим ok, commercial vendors restricted). Для most teams — OpenTofu safer long-term.

State management?

Remote backend обязателен для teams: S3 + DynamoDB (lock), Terraform Cloud, или gitlab-managed-terraform-state. Local state = race conditions.

Terraform vs Pulumi?

Pulumi — IaC на real programming languages (TS, Python, Go). Terraform — HCL DSL. Pulumi better для developers, Terraform для sysadmins.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.