首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么需要在Terraform上使用这个参数定义中的双斜杠?

为什么需要在Terraform上使用这个参数定义中的双斜杠?
EN

Stack Overflow用户
提问于 2021-08-10 07:24:15
回答 1查看 674关注 0票数 1

目前,我在编写Terraform模块以部署Helm图表时遇到了以下问题:

代码语言:javascript
复制
│ Error: YAML parse error on external-dns/templates/serviceaccount.yaml: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal object into Go struct field .metadata.annotations of type string

有了这样的资源定义:

代码语言:javascript
复制
resource "helm_release" "external_dns" {
  name       = "externaldns"
  namespace  = var.external_dns_namespace
  repository = "https://charts.bitnami.com/bitnami"
  chart      = "external-dns"
  version    = "5.3.0"

  set {
    name  = "serviceAccount.annotations.eks.amazonaws.com/role-arn"
    value = resource.aws_iam_role.external_dns_role.arn
  }
}

当我找到一个具有类似模块的公共存储库时:https://github.com/lablabs/terraform-aws-eks-external-dns/blob/master/main.tf,并看到它的最后一个参数定义为

代码语言:javascript
复制
  set {
    name  = "serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn"
    value = aws_iam_role.external_dns[0].arn
  }

我试着添加那些双斜杠(),一切都正常!现在我想了解..。为什么这些双斜杠需要在最后两个之前“。但不是在另外两个人身上?

我知道,在Terraform中,双斜杠的字面意思是斜杠.但我不明白为何要这样做。

这就是我想要放到Terraform模块中的东西。

如对此问题有任何解释,将不胜感激:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-10 08:57:58

name = "serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn"中,您需要定义由点分隔的三个组:

serviceAccount -> annotations -> eks.amazonaws.com/role-arn

因为您的第三个组碰巧包含点,所以您成功地发现必须转义点字符才能保持正确的结构。

如果不逃跑的话,绳子就意味着

serviceAccount -> annotations -> eks -> amazonaws-> com/role-arn,这在这里毫无意义

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

https://stackoverflow.com/questions/68722570

复制
相关文章

相似问题

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