# Справочник по Terraform для начинающих Terraform — это инструмент для управления инфраструктурой как кодом (IaC). Он позволяет вам описывать желаемое состояние вашей инфраструктуры в текстовых файлах, а затем автоматически создавать, изменять и удалять облачные ресурсы, чтобы они соответствовали этому описанию. Здесь собраны основные команды, которые вы будете использовать в 99% случаев. ## Основной рабочий процесс ### 1. `terraform init` **"Инициализация"** Первая команда, которую нужно выполнить в новой директории с конфигурацией. * Скачивает необходимые плагины (провайдеры), описанные в `main.tf`. * Настраивает "бэкенд" (хранилище состояния). ```bash terraform init ``` ### 2. `terraform validate` **"Проверка синтаксиса"** Проверяет ваши файлы конфигурации (`.tf`) на наличие синтаксических ошибок и корректность использования атрибутов. Не обращается к облаку, только статический анализ. ```bash terraform validate ``` ### 3. `terraform plan` **"План действий"** Самая важная команда для безопасности. Она сравнивает ваш код с реальным состоянием облака и показывает, что *произойдет*, если вы примените изменения. * `+` (зеленый): будет добавлено. * `~` (желтый): будет изменено. * `-` (красный): будет удалено. ```bash terraform plan ``` ### 4. `terraform apply` **"Применение"** Выполняет действия, запланированные на предыдущем шаге. Создает, меняет или удаляет реальные ресурсы в облаке Nubes. * Всегда запрашивает подтверждение `yes` перед стартом (если не указан флаг `-auto-approve`). ```bash terraform apply ``` ### 5. `terraform destroy` **"Уничтожение"** Удаляет **все** ресурсы, описанные в текущей конфигурации Terraform. Используйте осторожно, чтобы очистить тестовое окружение. * Также требует подтверждения `yes`. ```bash terraform destroy ``` ## Дополнительные полезные команды * `terraform fmt`: Автоматически форматирует ваш код (расставляет отступы), делая его красивым и аккуратным. * `terraform output`: Выводит значения "outputs", если вы их определили (например, IP-адреса созданных серверов). * `terraform state list`: Показывает список ресурсов, про которые "знает" терраформ в данный момент. ## Когда использовать `terraform state rm` `terraform state rm` удаляет ресурс **только из Terraform state**, но **не удаляет** его в облаке. Используйте эту команду, когда: * ресурс уже удалён в облаке вручную/вне Terraform; * `plan` падает ошибкой вида "экземпляр ... удален"; * нужно заставить Terraform считать ресурс новым и создать его заново на следующем `apply`. Пример: ```bash terraform state rm nubes_postgres.db2 terraform plan terraform apply ``` ### Отличие от `terraform import` * `terraform state rm` — "забыть" ресурс в state. * `terraform import` — "подхватить" уже существующий ресурс в state. Если ресурс в облаке действительно удалён, обычно нужен именно `state rm`, а не `import`. --- !!! tip "Совет" Всегда выполняйте `terraform plan` перед `apply`, чтобы убедиться, что вы случайно не удаляете важные ресурсы.