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

Ключевые преимущества 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 ознакомьтесь с Сочетания клавиш Ubuntu: Полная шпаргалка.
Проверка установки
terraform --version
Команды CLI Terraform
Ниже приведен список всех команд 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"
- CLI:
- Типы:
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 } }
Провайдеры (Provisioners)
Используются для инициализации ресурсов. Пример:
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 - Кодирование: Для операций кодирования/декодирования Base64 см. Кодирование - декодирование Base64 на Windows, Linux и Mac
Эта шпаргалка предоставляет быстрый доступ к наиболее распространенным и продвинутым аспектам использования Terraform — от команд до лучших практик — делая ее полезной как для начинающих, так и для опытных пользователей. Хорошего дня!
Полезные ссылки
- https://developer.hashicorp.com/terraform
- Шпаргалка по Docker
- Шпаргалка по Docker Compose - Самые полезные команды с примерами
- Шпаргалка по Kubernetes
- Развертывание проекта Flutter с бэкендом на AWS Amplify
- Развертывание сайта на Hugo на AWS S3
- Производительность AWS Lambda: JavaScript против Python против Golang
- Слоистые Lambda с AWS SAM и Python
- AWS SAM + AWS SQS + Python PowerTools
- Minio как альтернатива Aws S3. Обзор и установка Minio