﻿---
title: Terraform
description: "Terraform: providers, декларативные ресурсы, state, write/plan/apply, модули и управление облачной инфраструктурой."
---

## Назначение

**Terraform** — IaC-инструмент HashiCorp для создания, изменения и версионирования облачных и on-prem ресурсов. Конфигурация на HCL описывает желаемое состояние, а providers работают с API платформ и SaaS.

Продукт имеет несколько редакций и source-available лицензию; условия выбранной версии проверяют отдельно. OpenTofu рассматривают как открытую альтернативу с совместимым рабочим процессом.

## Возможности и интеграции

- write → plan → apply с предварительным списком изменений;
- state для связи конфигурации с реальными ресурсами;
- resource graph и учёт зависимостей;
- модули, variables, outputs и переиспользование конфигурации;
- тысячи providers для облаков, Kubernetes, DNS и SaaS;
- remote backends, командная работа и policy/testing integrations;
- import существующих ресурсов и обнаружение drift.

## Ограничения

State требует защищённого хранения, контроля доступа и согласованной работы команды. `apply` может заменить или удалить ресурс: plan для stateful-объектов проверяют отдельно. Ручные изменения создают drift, а сам Terraform не настраивает всё содержимое VM — для этого часто нужен Ansible или образ.

## Когда выбирать

Подходит для декларативного provisioning нескольких облачных и SaaS-ресурсов с развитой экосистемой providers. OpenTofu выбирают по лицензионным требованиям, Pulumi — для программирования на общем языке.

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

- [Infrastructure as Code](https://wpcraft.ru/kb/infrastructure/iac.md)
- [GitOps](https://wpcraft.ru/kb/infrastructure/iac/gitops.md)
- [IaC для WordPress](https://wpcraft.ru/kb/infrastructure/iac/iac-wordpress.md)
- [Окружения](https://wpcraft.ru/kb/infrastructure/devops/environments.md)

## Материалы и источники

- [Terraform: Introduction](https://developer.hashicorp.com/terraform/intro) — providers, state и workflow.
- [Terraform: State](https://developer.hashicorp.com/terraform/language/state) — назначение и ограничения state.
- [Terraform: Modules](https://developer.hashicorp.com/terraform/language/modules) — переиспользуемые конфигурации.