我在运行时使用terraform中的工作区来分隔环境,以便可以使用不同的配置来分隔部署。
但是,我试图弄清楚如何设置CLI变量。
我的variables.tf:
locals {
environment = "${terraform.workspace}"
lambda_vars = {
deploy_version = "0.1"
deploy_name = "deployment"
deploy_secret_1 = "somesupersecretsecret"
}
}
这些变量在我的整个配置中都使用。
我正在尝试使用CLI设置新变量,但是它不起作用,而且我似乎找不到任何有关如何实现此目标的参考。我已经尝试过:
terraform apply -var 'local.lambda_vars={ deploy_secret_1 = "somesupersecretsecret1" }'
我觉得我要走错路了。
任何人都可以帮忙吗?
如果要配置变量,则应使用实际的variables而不是locals。本机是一种组成事物的方式,因此您避免重复自己或可以使用插值法。变量根本不允许任何插值。
因此,在您的情况下,应为要配置的内容声明单独的变量。如果这只是deploy_secret_1
,则可以使用以下内容进行此操作:
variable "deploy_secret_1" {
default = "somesupersecretsecret"
}
locals {
environment = "${terraform.workspace}"
lambda_vars = {
deploy_version = "0.1"
deploy_name = "deployment"
deploy_secret_1 = "${var.deploy_secret_1}"
}
}
现在,如果您运行以下命令:
terraform apply -var 'deploy_secret_1=overriding-secret'
它应该覆盖deploy_secret_1
部分,但其余部分保持不变。如果您没有通过命令行,环境变量或deploy_secret_1
文件指定tfvars
变量,则它将默认为somesupersecretsecret
。如果要强制定义它,并且如果不指定变量则报错,则只需在变量声明中省略default
参数。
如果您希望能够覆盖更多内容,则应声明更多变量。