Terraform

Материал из Энциклопедия интернет-маркетинга MarketWiki

Terraform - это открытый инструмент, созданный компанией HashiCorp, который позволяет реализовать подход «Инфраструктура как код» (IaC). Terraform даёт возможность разработчикам и системным администраторам описывать всю необходимую инфраструктуру (виртуальные машины, сети, базы данных, кластеры Kubernetes) в виде понятного, декларативного кода, а затем автоматически создавать и управлять ею.

В интернет-маркетинге использование Terraform - это признак зрелости технической команды. Он гарантирует, что инфраструктура под ваш сайт, лендинг или приложение будет создаваться быстро, без ошибок и в точности соответствовать заявленным требованиям, что критически важно для стабильности рекламных кампаний.

Что такое Terraform

[править]

Terraform - это инструмент, который выступает посредником между вами и облачными провайдерами (Яндекс.Облако, AWS, Google Cloud, Azure) или другими платформами (Kubernetes, GitHub, OpenStack). Вместо того чтобы вручную нажимать кнопки в веб-интерфейсе, вы пишете код, описывающий желаемое состояние инфраструктуры, а Terraform сам выполняет все необходимые действия через API.

Ключевая особенность: Декларативный язык HCL

[править]

Terraform использует собственный декларативный язык - HashiCorp Configuration Language (HCL). Синтаксис HCL интуитивно понятен и близок к JSON, но более удобен для человека.

Вы не пишете, *как* создать ресурс («сначала создать сеть, потом виртуалку...»). Вы пишете, *что* должно быть в итоге («у меня должно быть 3 виртуальные машины, подключённые к этой сети»). Terraform сам строит граф зависимостей и определяет правильный порядок действий.

Как работает Terraform: три этапа

[править]

Рабочий процесс Terraform состоит из 3 основных шагов:

  1. Write (Написание). Разработчик пишет конфигурационные файлы (.tf), в которых описывает желаемые ресурсы.
  2. Plan (Планирование). Команда terraform plan анализирует код и текущее состояние инфраструктуры, после чего показывает план - список действий, которые будут выполнены (какие ресурсы создадутся, обновятся или удалятся). Это безопасный этап проверки перед реальными изменениями.
  3. Apply (Применение). После утверждения плана команда terraform apply выполняет все необходимые действия, синхронизируя реальную инфраструктуру с вашим кодом.

Ключевые компоненты Terraform

[править]
  • Провайдеры (Providers). Это плагины, которые позволяют Terraform взаимодействовать с API различных сервисов. Есть провайдеры для AWS, Яндекс.Облака, Kubernetes, GitHub и тысяч других. Без провайдера Terraform не сможет управлять ресурсами.
  • Ресурсы (Resources). Это конкретные компоненты инфраструктуры, которые вы создаёте: yandex_compute_instance (виртуальная машина), aws_s3_bucket (облачное хранилище), kubernetes_deployment (развёртывание в Kubernetes).
  • Модули (Modules). Это способ группировки и переиспользования конфигураций. Модуль может описывать, например, типовую конфигурацию веб-сервера. Его можно один раз написать и потом использовать в разных проектах.
  • Файл состояния (State File). Terraform хранит информацию о текущем состоянии инфраструктуры в специальном файле terraform.tfstate. Этот файл - «источник правды» для Terraform, он необходим, чтобы понимать, какие ресурсы уже созданы.

Блокировки состояний (State Locking)

[править]

При работе в команде несколько человек могут одновременно запускать terraform apply. Чтобы избежать конфликтов и повреждения state-файла, Terraform поддерживает блокировки состояний. Когда один пользователь выполняет операцию, state-файл блокируется для других.

Terraform Cloud и Enterprise

[править]

HashiCorp предлагает коммерческие продукты - Terraform Cloud и Terraform Enterprise, которые добавляют удобный веб-интерфейс, возможности совместной работы, политики безопасности и удалённое хранение state-файлов с блокировками.

Terraform и мультиоблачность

[править]

Terraform позволяет управлять инфраструктурой в разных облаках из одного места. Вы можете описать часть ресурсов в AWS, часть - в Яндекс.Облаке, а часть - в Google Cloud, и Terraform будет согласованно создавать их все. Это даёт бизнесу гибкость и защиту от блокировок у одного провайдера.

Terraform и другие инструменты

[править]
  • Terraform vs. Ansible. Terraform создан в первую очередь для *провижининга* (создания) инфраструктуры. Ansible же чаще используется для *управления конфигурацией* уже созданных серверов (установка софта, обновление настроек). Они отлично дополняют друг друга.
  • Terraform vs. Kubernetes. Kubernetes управляет контейнерами, а Terraform может управлять *самим кластером Kubernetes*, а также другими ресурсами (базами данных, сетями), которые находятся за его пределами.

Связанные термины

[править]