Загрузить конфигурацию из внешнего файла в terraform - PullRequest
1 голос
/ 09 апреля 2020

Я использую Terraform для предоставления некоторой инфраструктуры Google. Я хотел бы сохранить некоторые переменные конфигурации во внешнем (не терраформном) конфигурационном файле. Идея состоит в том, чтобы использовать эти переменные в Terraform и bash, поэтому я не хотел бы использовать типичный файл .tfvars. Как этого добиться?

У меня есть три файла, и давайте для простоты предположим, что они хранятся в одном каталоге.

Общие файлы конфигурации с переменными для приема:

# config.txt
GOOGLE_PROJECT_ID='my-test-name'
GOOGLE_REGION='my-region'

Файл Terraform с источниками данных:

# datasources.tf
data "local_file" "local_config_file" {
  filename = "./config.txt"
}

Файл Terraform с переменными:

# variables.tf
variable "project_id" {}

variable "region" {
  default = 'europe-west3'
}

1 Ответ

2 голосов
/ 09 апреля 2020

Если все ваши переменные, которые вы хотите использовать в Terraform, являются строковыми переменными , вы можете определить их как переменные окружения, чтобы использовать их в Terraform и в ваших скриптах Bash:

Terraform будет считывать переменные окружения в форме TF_VAR_name, чтобы найти значение для переменной. Например, переменная TF_VAR_region может быть установлена ​​в оболочке для установки переменной региона в Terraform.

# config.sh
export TF_VAR_region="my-region"
export TF_VAR_project_id="my-test-name"

Обратите внимание, что этот подход не будет работать для переменных типа списка или карты:

Примечание. Переменные окружения могут заполнять только строковые переменные. Переменные типа list и map должны заполняться с помощью одного из других механизмов.

См. Документацию здесь для получения дополнительной информации.

...