我正在尝试在Jenkins中动态配置Terraform企业工作区。为此,我需要能够在main.tf中动态设置远程后端工作空间名称。像这样:
org.apache.commons.math3.distribution.TDistribution@404b9385
现在,当我跑步时:
# Using a single workspace:
terraform {
backend "remote" {
hostname = "app.xxx.xxx.com"
organization = "YYYY"
# new workspace variable
workspaces {
name = "${var.workspace_name}"
}
}
}
我得到:
terraform init -backend-config="workspace_name=testtest"
我想用Terraform做些什么吗?
答案 0 :(得分:1)
您不能将任何变量"${var.workspace_name}"
或内插值放入后端远程状态存储中。
但是,您可以使用Backend值在旁边创建一个文件,该文件在main.tf
文件中看起来像这样:
# Terraform backend State-Sotre
terraform {
backend "s3" {}
}
,例如dev.backend.tfvars
:
bucket = "BUCKET_NAME"
encrypt = true
key = "BUCKET_KEY"
dynamodb_table = "DYNAMODB_NAME"
region = "AWS_REGION"
role_arn = "IAM_ROLE_ARN"
您也可以使用partial configuration for s3 Backend。 希望会有所帮助。
答案 1 :(得分:0)
嘿,我找到了执行此操作的正确方法:
虽然语法有些棘手,但远程后端支持部分后端初始化。这意味着该配置可以包含如下所示的后端块:
terraform {
backend "remote" { }
}
然后可以使用这样的动态设置的后端配置初始化Terraform(用适当的值替换ORG和WORKSPACE):
terraform init -backend-config "organization=ORG" -backend-config 'workspaces=[{name="WORKSPACE"}]'