我有以下(简化的)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)"
cluster_id
中的format()
没有作为数字处理,因此格式化失败。我希望得到cluster-01
,但事实并非如此。
我做错什么了吗,或者真的不可能在格式中使用自定义变量作为数字吗?
答案 0 :(得分:2)
Terraform,小于0.12,仅supports string
, list
and map
types as an input variable,因此尽管您提供了integer
(或float
或boolean
),它仍将强制转换为{{1} }。
虽然Terraform and Go都允许您对整数和字符串使用相同的填充,所以您可以使用以下内容对string
进行0填充:
cluster_id
答案 1 :(得分:0)
我发现的另一个选择是进行${format("cluster-%02d", var.cluster_id+0)}
。加零将产生实数,然后%02d
可以正常工作。但是使用%02s
会更干净。