我可以在Terraform中将变量乘以另一个变量吗?
这似乎可行:
count = "${var.var1} * ${var.var2}"
然后我尝试:
count = "${format("int","${var.var1}" * "${var.var2}")}"
当var1 = 0和var2 = 0时。
但是这会引发以下错误错误:
无法将“ int%!(EXTRA int = 0)”解析为整数
答案 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}"
引号内的任何${
... }
序列都由对定界符内的表达式求值的结果所代替。这些定界符之外的所有内容均按字面意义进行。