Как работают логи в Terraform?

«Как работают логи в Terraform?» — вопрос из категории Terraform, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Логи Terraform — это детализированный вывод, который записывает внутренние операции при выполнении команд plan, apply, destroy и других. Они незаменимы для отладки проблем с провайдерами, состоянием (state) или неожиданного поведения инфраструктуры.

Ключевые уровни логирования (от наиболее к наименее детальному):

  • TRACE: Максимальная детализация, включая HTTP-запросы/ответы к API облачных провайдеров.
  • DEBUG: Отладочная информация о внутренней логике Terraform и плагинов.
  • INFO: Стандартные информационные сообщения (уровень по умолчанию).
  • WARN: Предупреждения о потенциальных проблемах.
  • ERROR: Сообщения об ошибках, препятствующих выполнению.

Как включить логирование: Уровень задается через переменную окружения TF_LOG, а путь к файлу — через TF_LOG_PATH.

export TF_LOG=DEBUG
export TF_LOG_PATH=./terraform.log
terraform apply

Пример вывода лога:

2023-10-01T12:00:00.000Z [DEBUG] plugin: starting plugin: path=/.../terraform-provider-aws args=[...]
2023-10-01T12:00:01.000Z [INFO]  provider.aws: Creating EC2 instance: instance_id="i-123456"
2023-10-01T12:00:02.000Z [WARN]  provider.aws: Operation may take longer than expected.

Практическое использование:

  • Отладка провайдеров: Логи TRACE/DEBUG показывают сырые запросы к облачному API, что помогает понять причину ошибки аутентификации или лимитов.
  • Анализ плана: Можно увидеть, почему ресурс помечен для замены (например, из-за изменения неизменяемого атрибута).
  • Продакшен: На production-окружениях следует использовать WARN или ERROR, чтобы избежать переполнения диска и утечки чувствительной информации из TRACE-логов.