Использовать переменную в удаленном бэкэнде Terraform

# Using a single workspace:
terraform {
  backend "remote" {
    hostname = "app.terraform.io"
    organization = "company"

    workspaces {
      name = "my-app-prod"
    }
  }
}

Для удаленного бэкэнда Terraform есть ли способ использовать переменную для указания имени организации / рабочего пространства вместо жестко заданных значений?

Документация Terraform, похоже, тоже не упоминала ничего связанного.

1 ответ

Решение

Документация по настройке бэкэнда подробно расскажет об этом. Главное, на что следует обратить внимание:

Может быть указан только один бэкэнд, и конфигурация может не содержать интерполяции. Terraform подтвердит это.

Если вы хотите сделать это легко конфигурируемым, то вы можете использовать частичную конфигурацию для статических частей (например, тип бэкэнда, такой как S3), а затем предоставлять конфигурацию во время выполнения в интерактивном режиме, с помощью переменных среды или с помощью флагов командной строки.

Лично я обертываю действия Terraform в небольшой скрипт оболочки, который запускается terraform init с флагами командной строки, которые используют соответствующий сегмент S3 (например, разные для каждого проекта и учетной записи AWS) и удостоверяются, что местоположение файла состояния совпадает с путем к каталогу, над которым я работаю.

У меня были те же проблемы, и я был очень разочарован необходимостью дополнительных скриптов инициализации / оболочки. Некоторое время назад я начал использовать Terragrunt.

Стоит взглянуть на Terragrunt, потому что он закрывает разрыв между Terraform и отсутствием использования переменных в некоторых точках, например, для конфигурации удаленного бэкенда:https://terragrunt.gruntwork.io/docs/getting-started/quick-start/

Другие вопросы по тегам