Skip to content

📘 Terraform


1. Общие сведения

Наименование:
Terraform

Описание:
Terraform — это open-source инструмент для безопасного и эффективного создания, изменения и версионного управления инфраструктурой. Позволяет определять ресурсы как код (Infrastructure as Code), что позволяет автоматизировать управление облачными и локальными ресурсами.

Тип системы:
Инструмент управления инфраструктурой / Инструмент DevOps
Класс: Infrastructure as Code (IaC), Provisioning Tool

Разработчик:
HashiCorp

Год выпуска:
2014 год

Лицензия:
Mozilla Public License 2.0 (open source)

Сайт: https://www.terraform.io


2. Основные компоненты

Компонент Описание
Providers Плагины, предоставляющие доступ к API различных провайдеров (AWS, Azure, GCP и др.)
Resources Объекты, представляющие элементы инфраструктуры (например: виртуальные машины, сети, БД)
State (состояние) Файл состояния, в котором Terraform хранит информацию о текущей инфраструктуре
Variables Входные переменные для параметризации конфигураций
Outputs Выходные значения, отображающие полезную информацию после применения конфигурации
Modules Повторно используемые блоки конфигурации
Data Sources Чтение данных из внешних источников без их изменения

3. Основные функции

Функция Описание
Infrastructure as Code Определение инфраструктуры через код
Multi-cloud поддержка Работа с AWS, Azure, GCP, VMware, OpenStack и другими
Автоматизация Полностью автоматическое создание и изменение инфраструктуры
Idempotency Применение изменений без повторного создания того, что уже настроено
Версионность Поддержка Git для контроля изменений
Планирование изменений Предварительный просмотр изменений (terraform plan)
Удаление инфраструктуры Полное удаление всех созданных ресурсов по запросу
Поддержка модулей и шаблонов Упрощает переиспользование и управление сложными проектами

4. Пример использования

Пример .tf файла (AWS EC2 instance):

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

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

  tags = {
    Name = "my-terraform-instance"
  }
}

Основные команды:

terraform init      # Инициализация проекта
terraform plan      # Просмотр предполагаемых изменений
terraform apply     # Применить изменения
terraform destroy   # Удалить все созданные ресурсы

5. Преимущества использования Terraform

Единая абстракция для разных платформ – один язык для всех облаков
Безопасное управление инфраструктурой – можно просматривать изменения до применения
Полная автоматизация – не нужно вручную создавать ресурсы
Масштабируемость – легко управлять сотнями ресурсов
Поддержка GitOps и CI/CD – легко внедряется в pipeline
Open Source – активное сообщество и регулярные обновления
Поддержка Ansible, Puppet и других IaC инструментов – совместимость в комплексных решениях


6. Использование в проектах

Этап Возможности
Проектирование инфраструктуры Создание архитектуры в виде кода
CI/CD Интеграция в pipeline для автоматического создания сред
Тестирование Быстрое разворачивание тестовой инфраструктуры
Деплой Автоматическое создание production окружения
Обслуживание Обновление конфигураций, добавление новых ресурсов
Обучение Изучение DevOps-процессов, облачных технологий и IaC подхода

7. Альтернативы Terraform

Инструмент Особенности
AWS CloudFormation Встроенный инструмент AWS для управления ресурсами
Azure Resource Manager (ARM) Для управления ресурсами Microsoft Azure
Google Deployment Manager (GDM) Для Google Cloud Platform
Pulumi Поддерживает настоящие языки программирования (Python, JS, Go и др.)
Ansible Больше фокус на конфигурационном управлении, чем на IaC
SaltStack / Chef / Puppet Меньше ориентированы на инфраструктуру как код

8. Интеграции

Интеграция Описание
Jenkins / GitLab CI / GitHub Actions Автоматизация запуска и применения изменений
Docker / Kubernetes Управление контейнерной средой и оркестраторами
AWS / GCP / Azure Полная поддержка всех major cloud провайдеров
Ansible / Puppet Совместное использование для IaC + Config Management
Prometheus / Grafana Настройка мониторинга после развертывания инфраструктуры
Terraform Cloud / Enterprise Управление состоянием, политиками и выполнением планов
LDAP / Active Directory Интеграция с системами авторизации