将变量乘以另一个变量,然后将其格式化为字符串

时间:2018-08-15 09:02:32

标签: terraform

我可以在Terraform中将变量乘以另一个变量吗?

这似乎可行:

count = "${var.var1} *  ${var.var2}"

然后我尝试:

count = "${format("int","${var.var1}" * "${var.var2}")}"

当var1 = 0和var2 = 0时。

但是这会引发以下错误错误:

  

无法将“ int%!(EXTRA int = 0)”解析为整数

2 个答案:

答案 0 :(得分:3)

您实际上需要为要插入的整数指定占位符。 format使用here中记录的printf样式语法。

因此,您可以执行以下操作:

variable "var1" {
  default = 1
}

variable "var2" {
  default = 2
}

output "example" {
  value = "${format("int-%d", var.var1 * var.var2)}"
}

这将输出:

example = int-2

运行$ TF_VAR_var1=10 TF_VAR_var2=42 terraform apply将输出:

example = int-420

答案 1 :(得分:0)

您的示例中将两个数字相乘的最简单方法如下:

count = "${var.var1 * var.var2}"

请注意,乘法运算符位于${ }表达式定界符内,因为它是表达式的一部分。如果将*放在外面,那么它将被当作文字字符串,产生类似于"2 * 2"而不是"4"的结果。

要生成类似int-4的字符串(即在前面放置前缀),请将该前缀放在定界符之外:

example = "int-${var.var1 * var.var2}"

引号内的任何${ ... }序列都由对定界符内的表达式求值的结果所代替。这些定界符之外的所有内容均按字面意义进行。