Terraform 从环境中读取变量
Terraform to read variables from environment
我写了一个带有变量定义的 terraform 配置,如:
variable "GOOGLE_CLOUD_REGION" {
type = string
}
当我 运行 terraform plan
我被要求填写这个变量,即使这个变量是在我的环境中设置的。
有没有办法告诉 terraform 使用当前的环境变量?还是我必须导出它们并以某种方式手动将它们逐一传递?
您可以定义环境变量 TF_VAR_GOOGLE_CLOUD_REGION
来设置该变量。
如果您使用的是 bash,它可能看起来像这样:
export TF_VAR_GOOGLE_CLOUD_REGION="$GOOGLE_CLOUD_REGION"
terraform apply ...
From Environment Variables under Configuration Language: Input Variables.
As a fallback for the other ways of defining variables, Terraform searches the environment of its own process for environment variables named TF_VAR_
followed by the name of a declared variable.
This can be useful when running Terraform in automation, or when running a sequence of Terraform commands in succession with the same variables. For example, at a bash
prompt on a Unix system:
$ export TF_VAR_image_id=ami-abc123
$ terraform plan
...
You can create a file that ends with .tfvars
or .tfvars.json
然后当你 运行 a plan
你指定那个文件:
terraform apply -var-file="example.tfvars"
如果您将文件命名为 terraform.tfvars
或 terraform.tfvars.json
或者文件名以 .auto.tfvars
或 .auto.tfvars.json
结尾
然后 Terraform 自动 加载变量定义文件,当你 运行 a plan
.
时你不必手动指定它
terraform.tfvars
文件的示例:
first_env_var = "environment_variable_one"
second_env_var = "environment_variable_two"
terraform.tfvars.json
文件的示例:
{
"image_id": "ami-abc123",
"availability_zone_names": ["us-west-1a", "us-west-1c"]
}
我会通过在项目目录中创建一个 variables.tf 文件来解决这个问题。使用所需的变量块,您可以指定默认值:
variable "GOOGLE_CLOUD_REGION" {
type = string
default = "us-west1"
}
这将用作每个 运行 期间的默认值,并且不会提示您。
我写了一个带有变量定义的 terraform 配置,如:
variable "GOOGLE_CLOUD_REGION" {
type = string
}
当我 运行 terraform plan
我被要求填写这个变量,即使这个变量是在我的环境中设置的。
有没有办法告诉 terraform 使用当前的环境变量?还是我必须导出它们并以某种方式手动将它们逐一传递?
您可以定义环境变量 TF_VAR_GOOGLE_CLOUD_REGION
来设置该变量。
如果您使用的是 bash,它可能看起来像这样:
export TF_VAR_GOOGLE_CLOUD_REGION="$GOOGLE_CLOUD_REGION"
terraform apply ...
From Environment Variables under Configuration Language: Input Variables.
As a fallback for the other ways of defining variables, Terraform searches the environment of its own process for environment variables named
TF_VAR_
followed by the name of a declared variable.This can be useful when running Terraform in automation, or when running a sequence of Terraform commands in succession with the same variables. For example, at a
bash
prompt on a Unix system:$ export TF_VAR_image_id=ami-abc123 $ terraform plan ...
You can create a file that ends with .tfvars
or .tfvars.json
然后当你 运行 a plan
你指定那个文件:
terraform apply -var-file="example.tfvars"
如果您将文件命名为 terraform.tfvars
或 terraform.tfvars.json
或者文件名以 .auto.tfvars
或 .auto.tfvars.json
结尾
然后 Terraform 自动 加载变量定义文件,当你 运行 a plan
.
terraform.tfvars
文件的示例:
first_env_var = "environment_variable_one"
second_env_var = "environment_variable_two"
terraform.tfvars.json
文件的示例:
{
"image_id": "ami-abc123",
"availability_zone_names": ["us-west-1a", "us-west-1c"]
}
我会通过在项目目录中创建一个 variables.tf 文件来解决这个问题。使用所需的变量块,您可以指定默认值:
variable "GOOGLE_CLOUD_REGION" {
type = string
default = "us-west1"
}
这将用作每个 运行 期间的默认值,并且不会提示您。