Использовать переменную в удаленном бэкэнде 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/