如何在Terraform中格式化数字变量

时间:2019-02-19 16:46:32

标签: terraform

我有以下(简化的)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,但事实并非如此。

我做错什么了吗,或者真的不可能在格式中使用自定义变量作为数字吗?

2 个答案:

答案 0 :(得分:2)

Terraform,小于0.12,仅supports string, list and map types as an input variable,因此尽管您提供了integer(或floatboolean),它仍将强制转换为{{1} }。

虽然Terraform and Go都允许您对整数和字符串使用相同的填充,所以您可以使用以下内容对string进行0填充:

cluster_id

答案 1 :(得分:0)

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