从外部文件加载配置到 terraform

Load config from external file to the terraform

我使用 Terraform 来提供一些 Google 基础设施。我想将一些配置变量存储在外部(非 terraform)配置文件中。我的想法是在 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'
}

如果您想在 Terraform 中使用的所有变量都是 字符串类型变量,您可以将它们定义为环境变量以在 Terraform 和您的 Bash 脚本:

Terraform will read environment variables in the form of TF_VAR_name to find the value for a variable. For example, the TF_VAR_region variable can be set in the shell to set the region variable in Terraform.

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

请注意,此方法不适用于列表或地图类型变量:

Note: Environment variables can only populate string-type variables. List and map type variables must be populated via one of the other mechanisms.

See the docs here for more information.