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