【问题标题】:Can we have a dynamic string input with as a variable present on the terraform resource block?我们可以在 terraform 资源块上使用动态字符串输入作为变量吗?
【发布时间】:2020-12-09 18:35:48
【问题描述】:

场景:有多个 Kubernetes 部署我有一个skeleton.tf 文件,它可以根据要求创建一个应用程序,具有最少的变量更改和不同的命名空间,我不想提供默认名称以便我提供输入每次我做一个Terraform计划应用

喜欢

resource "kubernetes_deployment" "${var.deployment-1}" {
...
...
namespace= var.namespace_1
...
}

我如何做到这一点?这是否支持,因为我面临语法插值错误, 或

Invalid string literal: Template sequences are not allowed in this string. To include a literal "$", double it (as "$$") to escape it.

Invalid character: This character is not used within the language.

Invalid block definition: Either a quoted string block label or an opening brace ("{") is expected here.

我已经阅读了有关 terraform 工作空间的信息,但是,如果能够将资源名称作为动态输入来获取,那将是一项乏味的任务。对此的任何帮助或解决方法表示赞赏。

【问题讨论】:

  • 如果您有具体问题,请询问详细信息。 TIA

标签: variables automation environment-variables terraform devops


【解决方案1】:

resource 块的第二个标签中给出的名称仅在当前 Terraform 模块中使用,因此无需动态自定义。如果您没有要使用的特定名称,则可以使用通用名称,例如 "main"

因为这是一个仅适用于 Terraform 的名称,Terraform 会自动处理它可能出现在模块的多个不同实例中,因为资源的完整地址包括包含它的模块的地址。因此,整个结果在 Terraform 配置中是唯一的,并且资源的本地名称在声明它的模块中是唯一的。

【讨论】:

  • 谢谢 Martin,非常感谢您的帮助,如果我使用模块和字符串子集或将变量定义为对象有什么好处?
猜你喜欢
  • 2020-12-08
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2022-06-22
  • 2020-06-11
相关资源
最近更新 更多