我想在我的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
谢谢!
答案 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=123
或 terraform.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