【问题标题】:How to incorporate variables in defaults?如何将变量合并到默认值中?
【发布时间】:2019-09-21 04:10:24
【问题描述】:

我有以下代码 sn-p,其目标是创建一个随机 ID 并将其用于命名项目。

  7 resource "random_id" "ent_id" {
  8     byte_length = 8
  9 }
 10
 23 variable "project_name" {
 24         type = "string"
 25         default = "proj-$${random_id.ent_id.hex}"
 26         description = "Name of the service project"
 27 }


在语法上看起来不错,但是当我运行 init 时,我得到了这个-

Error: module.folder.google_project.new_project: "proj-$${random_id.ent_id.hex}" name must be 4 to 30 characters with lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point.

我在这里遗漏了什么吗?是字符串“proj-$${random_id.ent_id.hex}”的错误还是出现(或至少打算出现)类似“proj-b7bb04fde7253b14”的表达式的结果

请注意表达式中的“$$”是由于这个原因-https://github.com/hashicorp/terraform/issues/18069

【问题讨论】:

  • 0.12 测试版支持该行为。你用的是什么版本?
  • 0.11.13。那么这是否意味着默认值中的变量插值不支持低于 0.12?
  • 根据您链接到的 Github 问题:是的。在此之前,您几乎肯定必须改用locals
  • 也不能使用 '''locals'''。因为那时我必须将局部变量分配给默认值(默认 =“${local.folder_id}”)。并且默认不支持插值。我想没有办法将默认值设置为“变量”。

标签: terraform


【解决方案1】:

不确定我是否正确理解了这个问题,因为我对 Terraform 很陌生,但对我来说 $$ 将被替换为 $ 而不是插入内容。您最终会得到一个值为“proj-${random_id.ent_id.hex}”的变量,而不是预期的 proj-XXXXXXXX,其中 XXXXXXXX 是您的随机 ID。

【讨论】:

  • 表达式 default = "proj-${random_id.ent_id.hex}" 给出错误 - 错误:变量“project_name”:默认可能不包含插值
猜你喜欢
  • 2021-12-30
  • 1970-01-01
  • 2021-10-24
  • 2011-08-27
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
相关资源
最近更新 更多