首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在变量中定义键的局部变量映射的Terraform插值

在变量中定义键的局部变量映射的Terraform插值
EN

Stack Overflow用户
提问于 2021-03-25 15:52:53
回答 2查看 2.9K关注 0票数 0

在变量中定义键的局部变量映射的Terraform插值

目标:在变量中定义预置大小标签,资源配置使用本地映射中的预设值。

代码语言:javascript
运行
复制
var "define_size" {
  description = "Select either small, medium, large"
  default = "large"
}


locals {

  small = {
    volume_gb = 1
    volume_count = 1
  }

  medium = {
    volume_gb = 20
    volume_count = 5
  }

  large = {
    volume_gb = 500
    volume_count = 10
  }

}


resource "aws_ebs_volume" "example" {
  availability_zone = var.availability_zone
  size              = ??????
}

尝试:

  • size = local.$var.define_size.volume_gb.明显的错误语法导致“错误:无效字符”。和引用$ character.
  • size = local.${var.define_size}.volume_gb.的“错误:无效属性名”明显的错误语法导致“错误:无效字符”。和引用$ character.
  • size = "${local[var.define_size].volume_gb}".的“错误:无效属性名”“错误:无效引用。对资源类型的引用之后必须至少有一个属性访问,指定正确呈现的资源name."
  • size = tostring("local.${var.define_size}.volume_gb"),但作为字符串而不是资源引用"local.large.volume_gb"
  • format("%#v",tostring("local.${var.define_size}.volume_gb")),这部分地呈现为带有转义字符的字符串,而不是资源"\"local.large.volume_gb\""

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-25 15:55:46

如果您想要基于密钥的访问,您应该使locals定义与键一起工作,例如map

代码语言:javascript
运行
复制
locals {
  sizes = {
    small = {
      volume_gb = 1
      volume_count = 1
    }
    medium = {
      volume_gb = 20
      volume_count = 5
    }
    large = {
      volume_gb = 500
      volume_count = 10
    }
  }
}

然后使用local.sizes[var.define_size].volume_gb访问

票数 2
EN

Stack Overflow用户

发布于 2021-09-27 02:48:15

谢谢@ also 2302给我答案,我也在看这个。我不能评论,所以我创造了另一个答案。对于我的情况,我从json文件中读取了一个列表,然后依赖于env,它将得到正确的值。

power.json

代码语言:javascript
运行
复制
[
  {
    "name": "a",
    "power": {
      "dev" : 1,
      "sit" : 2,
      "uat" : 3,
      "prod" : 4
    }
  }
]

在tf文件中,我将如下所示

代码语言:javascript
运行
复制
locals {
  power = jsondecode(file("power.json"))
}

resource "aws_example" "power" {
  count = length(local.power.*.name)
  power = local.power[count.index].power[var.env]
}

根据输入var.env,"power“将具有1、2、3或4的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66803123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档