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