从外部文件加载配置到 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.
我使用 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.