Шпаргалка по Terraform - полезные команды и примеры

Список всех команд Terraform

Содержимое страницы

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

Terraform — это инструмент с открытым исходным кодом для инфраструктуры как кода (IaC), разработанный HashiCorp, позволяющий пользователям определять и развертывать инфраструктуру на нескольких облачных платформах (например, AWS, Azure, GCP) с использованием декларативных файлов конфигурации. Его основная цель — автоматизировать развертывание инфраструктуры, обеспечивать согласованность и снижать количество ручных ошибок. Terraform поддерживает мультиоблачные, модульные и ориентированные на состояние рабочие процессы, делая его основой современных практик DevOps.

студент использует terraform

Основные преимущества Terraform:

  • Декларативный синтаксис: определение желаемых состояний инфраструктуры в коде.
  • Независимость от поставщиков: работает с AWS, Azure, GCP, Kubernetes и другими.
  • Управление состоянием: отслеживание изменений инфраструктуры для предотвращения конфликтов.

Руководство по установке и настройке

https://developer.hashicorp.com/terraform/tutorials#get-started

Процесс установки Terraform довольно простой.

  • Linux (Ubuntu/Debian):

    wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
    sudo apt update && sudo apt install terraform
    
  • Windows (WSL):

    wget -O terraform.zip https://releases.hashicorp.com/terraform/1.5.5/terraform_1.5.5_windows_amd64.zip
    unzip terraform.zip
    
  • macOS (Homebrew):

    brew install terraform
    

Проверка

terraform --version

Команды Terraform CLI

Вот список всех команд Terraform:

Команда Описание
terraform init Инициализация новой или существующей директории конфигурации Terraform
terraform validate Проверка корректности конфигурации
terraform plan Показ плана выполнения без внесения изменений
terraform apply Применение изменений для достижения желаемого состояния
terraform destroy Удаление инфраструктуры, управляемой Terraform
terraform fmt Форматирование файлов конфигурации в стандартном стиле
terraform show Показ текущего состояния или плана
terraform refresh Обновление состояния реальной инфраструктурой
terraform providers Отображение поставщиков, используемых в конфигурации
terraform graph Визуализация зависимостей ресурсов в виде графа
terraform workspace list Список всех доступных рабочих пространств
terraform workspace new Создание нового рабочего пространства
terraform workspace select Переключение на указанное рабочее пространство
terraform workspace show Показ имени текущего рабочего пространства
terraform workspace delete Удаление указанного рабочего пространства
terraform output Показ значений выходных данных из файла состояния
terraform import Импорт существующего ресурса в Terraform
terraform taint Пометить ресурс для пересоздания при следующем применении
terraform untaint Снять пометку “tainted” с ресурса
terraform state list Список ресурсов в файле состояния
terraform state show Показ атрибутов одного ресурса в состоянии

Основы конфигурации

Расширения файлов

  • .tf: Основные файлы конфигурации (синтаксис HCL)
  • .tfvars: Значения переменных

Типы блоков Terraform

  • Пример поставщика
    provider "aws" {
      region = "us-east-1"
    }
    
  • Пример ресурса
    resource "aws_instance" "web" {
      ami           = "ami-0abcdef"
      instance_type = "t2.micro"
    }
    
  • Пример переменной
    variable "instance_count" {
      type    = number
      default = 2
    }
    
  • Пример вывода
    output "instance_ip" {
      value = aws_instance.web.public_ip
    }
    
  • Пример модуля
    module "vpc" {
      source = "./modules/vpc"
      cidr_block = var.vpc_cidr
    }
    

Работа с переменными

  • Объявление переменных
    variable "region" {
      description = "Регион AWS"
      default     = "us-east-1"
    }
    
  • Назначение значений
    • CLI: terraform apply -var="region=us-west-2"
    • Файл tfvars: terraform apply -var-file="prod.tfvars"
  • Типы: string, number, bool, list, map, object

Управление состоянием

  • Файл состояния: terraform.tfstate
  • Удаленное состояние (пример S3)
    backend "s3" {
      bucket = "my-tf-state"
      key    = "state.tfstate"
      region = "us-east-1"
    }
    
  • Просмотр состояния: terraform show terraform state list

Циклы и условные операторы

  • Count
    resource "aws_instance" "web" {
      count = 3
      ...
    }
    
  • For_each
    resource "aws_s3_bucket" "b" {
      for_each = var.bucket_names
      bucket   = each.value
    }
    
  • Условные операторы
    instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
    

Функции

  • Интерполяция строк: resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" }
  • Примеры списков и карт:
    locals {
      my_map = { a = 1, b = 2 }
    }
    

Провайдеры

Используются для загрузки ресурсов. Пример:

resource "aws_instance" "web" {
  ...
  provisioner "local-exec" {
    command = "echo Instance created"
  }
}

Лучшие практики

  • Контроль версий всех файлов .tf
  • Фиксация версий поставщиков для обеспечения согласованных развертываний
  • Удаленный бэкенд для управления состоянием (S3, Azure Blob и т.д.)
  • Шифрование файлов состояния в удаленных бэкендах
  • Модуляризация инфраструктуры с использованием повторно используемых модулей
  • Документирование ваших конфигураций
  • Тестирование в staging перед производством

Дополнительные ссылки

  • Помощь: terraform --help или [command] --help для получения помощи по конкретной команде
  • Отладка: Установите TF_LOG=INFO или TF_LOG=DEBUG для подробных логов
  • Форматирование: terraform fmt

Эта шпаргалка предоставляет быстрый доступ к наиболее распространенным и продвинутым аспектам использования Terraform — от команд до лучших практик, делая ее полезной как для новичков, так и для опытных пользователей. Хорошего дня!

Полезные ссылки