如何在大地形态中格式化数值变量



我有一个(简化的)Terraform代码:

variable "cluster_id" {
default = 1
}
resource "aws_instance" "instance" {
... some instance properties ...
tags {
"Name" = "${format("cluster-%02d", var.cluster_id)}"
}
}

当我运行terraform apply时,计划显示:

tags.Name: "%!d(string=1)"

format()中的cluster_id不会作为数字处理,因此格式化失败。我希望我能得到cluster-01但事实并非如此。

我做错了什么,还是真的无法在格式中使用自定义变量作为数字?

Terraform,低于0.12,仅支持stringlistmap类型作为输入变量,因此尽管您提供了integer(或floatboolean),它仍将被强制转换为string

Terraform和Go都允许你对整数和字符串使用相同的填充,所以你可以使用以下命令来0填充cluster_id

resource "aws_instance" "instance" {
# ... some instance properties ...
tags {
"Name" = "${format("cluster-%02s", var.cluster_id)}"
}
}

我发现的另一个选择是做${format("cluster-%02d", var.cluster_id+0)}。加零会产生实数,然后%02d正常工作。但是使用%02s更干净。

最新更新