如何通过CLI设置Terraform工作区变量?

问题描述 投票:1回答:1

我在运行时使用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 command-line-interface terraform
1个回答
0
投票

如果要配置变量,则应使用实际的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参数。

如果您希望能够覆盖更多内容,则应声明更多变量。

© www.soinside.com 2019 - 2024. All rights reserved.