Как отформатировать числовую переменную в Terraform - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть следующий (упрощенный) код 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 in format()не обрабатывается как число, поэтому форматирование не выполняется.Я ожидаю, что получу cluster-01, но это не так.

Я что-то не так делаю или действительно невозможно использовать пользовательские переменные в качестве чисел при форматировании?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Другой вариант, который я нашел, это сделать ${format("cluster-%02d", var.cluster_id+0)}.Добавление нуля дает действительное число, и тогда %02d работает правильно.Но использование %02s чище.

0 голосов
/ 19 февраля 2019

Terraform, до 0,12, только поддерживает типы string, list и map в качестве входной переменной , поэтому, несмотря на предоставление integer (или float или * 1008)*) он будет приведен к string.

И Terraform , и Go позволяют вам использовать одинаковое заполнение для целых чисел и строк, хотя вы можете просто использовать следующее для заполнения 0cluster_id:

resource "aws_instance" "instance" {
    # ... some instance properties ...
    tags {
        "Name" = "${format("cluster-%02s", var.cluster_id)}"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...