Terraform-在TF文件中使用环境变量

时间:2019-11-14 09:15:52

标签: terraform terraform-cloud

我想在我的TF文件中使用环境变量。我该如何在这些文件中提及它们?

我使用Terraform云并在环境变量部分中定义变量。这意味着我不使用cli来运行terraform命令命令(不导出TF_VAR和-var或-var-文件参数)。

我在论坛或文档中都没有找到答案。

编辑: 也许我能详细说明我所做的事情。

所以我有两个名为“用户名”和“密码”的环境变量

这些变量在Terraform Cloud的环境变量部分中定义。

在我的main.tf文件中,创建一个mongo集群,该集群应使用这些用户名和密码变量创建。 在main variables.tf文件中,我将这些变量定义为:

variable "username" {
  type = string
}

variable "password" {
  type = string
}

我的main.tf文件如下:

module "eu-west-1-mongo-cluster" {
...
...
  username = var.username
  password = var.password
}

在mongo子模块中,我在variables.tf文件中将它们定义为字符串类型,在子模块中的mongo.tf文件中,将它们引用为var.username和var.password

谢谢!

2 个答案:

答案 0 :(得分:0)

根据https://www.terraform.io/docs/cloud/workspaces/variables.html#environment-variables,terraform将导出所有提供的变量。

因此,如果您已定义环境变量TF_VAR_name,则应该能够在Terraform代码中用作var.name

希望这会有所帮助。

答案 1 :(得分:0)

我认为 Terraform Cloud 不支持您尝试执行的操作。您正在 UI 中设置 Environment Variables,但您需要设置 Terraform Variables(参见屏幕截图)。 对于 Terraform Cloud 后端,您需要动态创建 *.auto.tfvars,远程后端当前不支持通常的 -var="myvar=123"TF_VAR_myvar=123terraform.tfvars。以下错误消息是在使用 -var 值运行 terraform 1.0.1 时从 CLI 生成的:

│ Error: Run variables are currently not supported
│ 
│ The "remote" backend does not support setting run variables at this time. Currently the
│ only to way to pass variables to the remote backend is by creating a '*.auto.tfvars'
│ variables file. This file will automatically be loaded by the "remote" backend when the
│ workspace is configured to use Terraform v0.10.0 or later.
│ 
│ Additionally you can also set variables on the workspace in the web UI:
│ https://app.terraform.io/app/<org>/<workspace>/variables

我的用例是在 CI/CD 管道中,CLI 使用远程 Terraform Cloud 后端,因此创建了 *.auto.tfvars,例如:

# Environment variables set by pipeline
TF_VAR_cloudfront_origin_path="/mypath"

# Dynamically create *.auto.tfvars from environment variables
cat >dev.auto.tfvars <<EOL
cloudfront_origin_path="$TF_VAR_cloudfront_origin_path"
EOL

# Plan the run
terraform plan

enter image description here