Terraform & IaC

Infrastructure as Code - управление инфраструктурой через код

Terraform Workflow

Init
2
Validate
3
Plan
4
Apply

Resources Plan

+ createaws_vpc.main
VPC
+ createaws_subnet.public
Subnet
+ createaws_instance.web
EC2
~ updateaws_security_group.allow_http
Security Group

Что такое Terraform?

Terraform — это инструмент Infrastructure as Code (IaC) от HashiCorp, позволяющий описывать и управлять инфраструктурой через декларативные конфигурационные файлы.

Поддерживает AWS, Azure, GCP, Kubernetes и сотни других провайдеров.

Преимущества IaC

  • Версионирование инфраструктуры в Git
  • Воспроизводимость окружений
  • Автоматизация создания ресурсов
  • Предсказуемые изменения через plan
☁️

Multi-Cloud

Единый язык для управления ресурсами в AWS, Azure, GCP и других облаках

📋

State Management

Отслеживание текущего состояния инфраструктуры в state файлах

🔄

Модули

Переиспользуемые конфигурации для быстрого создания инфраструктуры

Пример Terraform конфигурации

# main.tf

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

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

resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"

  tags = {
    Name = "main-vpc"
  }
}

resource "aws_subnet" "public" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.1.0/24"

  tags = {
    Name = "public-subnet"
  }
}

resource "aws_instance" "web" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
  subnet_id     = aws_subnet.public.id

  tags = {
    Name = "web-server"
  }
}