如何获取名称基于另一个变量的变量的值?

吉辛·库马尔S

内部变量

locals {
  env_name = lower(terraform.workspace)
}

在tfvars内部

hc-auth-demo-port= 8003

主文件

port= ${var.hc-auth-"${local.env_name}"-port}"

出现错误:

语言中未使用此字符。

根据一个较早的答案,我已经尝试过(它可以修复该错误,但不能解决我的实际问题):

port = "${var.hc-auth}-${local.env_name}-port"

就是说没有声明hc.auth:

尚未声明名称为“ hc-auth”的输入变量。可以使用变量“ hc-auth” {}块声明该变量。

我已经在变量中声明了hc-auth-default-port,那么如何附加所有3个单词来构建该变量名并获取其值?

这是错误消息->这意味着它正在寻找变量hc.auth,但在我的情况下,我想要hc-auth-default-port插值

如何获取名称基于另一个变量的变量的值?

阿兰·奥迪(Alain O'Dea)

Terraform不支持​​从变量构建变量名,但是有一种解决方法:使用映射。

在terraform.tfvars中提供端口映射(注意使用snake_case而不是skewer-case,因为snake_case是Terraform代码的首选代码样式):

hc_auth_ports = {
  demo = 8003
}

在main.tf或variables.tf中声明一个map(int)变量hc_auth_ports

variable "hc_auth_ports" {
  type = map(int)
}

更新main.tf来查找端口在环境hc_auth_ports

port = var.hc_auth_ports[local.env_name]

现在,您应该获得想要的结果:

  1. 在tfvars中声明每个环境的端口
  2. 能够在main.tf中选择当前环境的端口

原始问题的原始答案

最初的问题实际上是:

为什么会出现错误“语言中未使用此字符”。尝试在字符串中追加变量时?

这是已更正错误的端口分配:

port = "${var.hc-auth}-${local.env_name}-port"

这种表达称为字符串模板

这是原始(残破)表达式:

port = ${var.hc-auth-"${local.env_name}"-port}"

这是为什么它不起作用的原因:

  1. 缺少双引号(")来开始字符串${var.hc_auth(可能是触发错误消息的原因,因为${在字符串模板之外是非法的)
  2. 缺少关闭括号(})以关闭var.hc_auth的变量插值
  3. "前的双引号(不正确${local.env_name}
  4. }之后的右大括号(不正确-port

插值采用以下形式:

${hcl_expression}

它必须在字符串中。

$ {...}序列是一个插值,它计算标记之间给出的表达式,并在必要时将结果转换为字符串,然后将其插入最终字符串:

"Hello, ${var.name}!"

在上面的示例中,访问了已命名的对象var.name并将其值插入字符串中,从而产生类似“ Hello,Juan!”的结果。

来自插值-字符串模板-配置语法

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

zsh:如何基于另一个变量获取变量的值?

如何读取变量的值,其中变量的名称是另一个变量的值

如何从另一个类获取变量的值

如何使用一个变量的值作为另一个变量的名称

Bash-如何从另一个变量中获取具有名称的变量的值

如何创建基于另一个变量的值递增1的变量?

如何在另一个变量的名称中使用shell变量的扩展值?

如何使用变量的值查找名称为value的另一个变量

如何调用名称作为文本传递给另一个变量的变量的值?

如何获取存储在jQuery中另一个变量中的变量的值

如何使用外键从另一个上下文中获取名称?

如何读取名称在另一个字段中的行字段的值

是否可以将一个变量的值插入另一个变量的名称?

获取变量的值到另一个模板

如何基于另一个变量从数组返回字符串值?

如何基于另一个值设置运行时环境变量

如何基于另一个Integer的值声明变量?

如何将临时变量设置为基于另一个表的值

如何基于另一个输入值在PHP中访问$ _Get变量

如何使用基于 js 的 swtich 为变量分配另一个值

通过名称获取变量,该变量存储在另一个变量中

如何在条件变量中粘贴基于r中另一个不同变量的值的值?

Ansible:如何从另一个变量构造一个变量然后获取其值

如何获取一个变量的值并将其设置为等于类中的另一个变量?

如何检测另一个变量的名称而不是其值的javascript?

如何从另一个函数获取变量?

基于另一个变量的变量摘要统计

如何根据同一行上的另一个列值获取名称为 Pandas DataFrame 中的列的值?

Vuex:如何使用基于另一个状态变量的值定义状态变量?