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

Terraform 将变量乘以另一个变量,然后将其格式化为字符串,terraform,Terraform,我可以用一个变量乘以地形中的另一个变量吗 这似乎有效: count = "${var.var1} * ${var.var2}" 然后我试着: count = "${format("int","${var.var1}" * "${var.var2}")}" 当var1=0和var2=0时 但这会引发以下错误: 无法将“int%!(EXTRA int=0)”解析为整数 实际上,您需要为要插入的整数指定占位符。使用文档中的printf样式语法 因此,在您的情况下,您可以执行以下操作: varia

我可以用一个变量乘以地形中的另一个变量吗

这似乎有效:

count = "${var.var1} *  ${var.var2}"
然后我试着:

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

但这会引发以下错误:

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


实际上,您需要为要插入的整数指定占位符。使用文档中的
printf
样式语法

因此,在您的情况下,您可以执行以下操作:

variable "var1" {
  default = 1
}

variable "var2" {
  default = 2
}

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

example = int-2
example = int-420
运行
$TF\u VAR\u var1=10 TF\u VAR\u var2=42 terraform apply
将输出:

example = int-2
example = int-420

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

count = "${var.var1 * var.var2}"
请注意,乘法运算符位于表达式分隔符的内部,因为它是表达式的一部分。如果将
*
放在外部,则它将被视为文本字符串,产生类似
“2*2”
的结果,而不是
“4”

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

example = "int-${var.var1 * var.var2}"
引号内的任何
${
..
}
序列都将替换为分隔符内表达式的求值结果。那些分隔符之外的任何东西都是按字面意思理解的