Info
Content

Introduction to Terraform

Terraform IaC инструмент, который позволяет описывать и облачные и on-prem ресурсы в человеко-читаемых конфигах, которые можно версионировать, переиспользовать и шарить. Terraform может менеджить как низкоуровневые компоненты (виртуалки, диски итд) так и высокоуровневые (днс и прочие SaaS)

Terraform создает и менеджит ресурсы в облаках через их API. Различные Terraform-провайдеры обеспечивают возможность работы с тем или иным облаком

Основной воркфлоу содержит три стадии:

  • Write - написание манифестов
  • Plan - terraform создает план выполнения которые описывает что будет создано, обновлено или удалено на основе манифестов и имеющейся инфраструктуры
  • Apply - по аппруву terraform создает ресурсы

Terraform хранит информацию о реальной инфраструктуре в statefile и использует его для вычисления того какие изменения нужно сделать чтобы привести реальную инфраструктуру к той что описана в конфигах

Манифесты декларативны - это значит что они описывают конечное состояние инфраструктуры и тебе не нужно описывать по-шагово что нужно сделать. Терраформ строит граф и понимает зависимости ресурсов (что нужно сделать в начале, а что в конце) и может создавать независящие друг от друга ресуры параллельно

Модули - коллекции описанных ресурсов которые можно переиспользовать


Провижининг инфраструктуры в множестве облаков повышает риск возникновения проблем (у разных облаков разные интерфейсы, разные утилиты и принятые воркфлоу). Терраформ позволяет использовать единый инструмент для управления инфраструктурами в разных облаках с сохранением зависимостей ресурсов между этими облаками


Есть три версии:

  • Terraform Open Source
  • Terraform Cloud - SaaS который запускает твои манифесты, имеет интерфейс, rbac и другие ништяки
  • Terraform Enterprise - это просто on-prem terraform cloud

Terraform дает абстракцию от ресурсов и провайдеров. Позволяет описывать все, от серверов, до имейлов

No Comments
Back to top