variables - 如何通过 CLI 设置 Terraform 工作区变量?
问题描述
我在 terraform 中使用工作区在运行时分隔环境,以便我可以使用不同的配置来分隔部署。
但是,我试图弄清楚如何设置 CLI 变量。
我的变量.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" }'
我觉得我正在以错误的方式解决这个问题。
任何人都可以帮忙吗?
解决方案
如果您希望能够配置变量,那么您应该使用实际变量而不是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
变量声明的参数。
如果您希望能够覆盖更多的东西,那么您应该声明更多的变量。
推荐阅读
- c# - 使用 System.Guid 作为整数
- php - 如何在 laravel post 中自定义 url/slug
- python - Pandas - 如何将“hh:mm:ss PM”字符串转换为 24 小时时间戳
- python - 使用 Pymongo 调用 Mongodb 原生方法
- java - Systemd 强制执行目录
- javascript - 如何在 Webpack bundle js 中保护我的静态网站的敏感数据
- math - 协助编写指数衰减公式
- pandas - 如何使用 Dataframe 从列中删除“₦”货币
- regex - 具有联合结果的递归正则表达式
- c# - WPF 中的最小化窗口无法通过在 WIndows 任务栏中拖动数据对象来恢复