Как вы делаете простую конкатенацию строк в Terraform? - PullRequest
5 голосов
/ 23 марта 2019

Я, должно быть, невероятно глуп, но не могу понять, как сделать простое объединение строк в Terraform.

У меня есть следующие данные null_data_source:

data "null_data_source" "api_gw_url" {
    inputs = {
      main_api_gw = "app.api.${var.env_name == "prod" ? "" : var.env_name}mydomain.com"
    }
}

Итаккогда env_name="prod" я хочу вывод app.api.mydomain.com и для чего-то еще - скажем, env_name="staging" я хочу app.api.staging.mydomain.com.

Но вышеприведенный вывод выдаст app.api.stagingmydomain.com <- заметить пропущенную точку после <code>staging.

Я попытался констатировать "."если env_name было не «prod», а ошибками Terraform:

data "null_data_source" "api_gw_url" {
    inputs = {
      main_api_gw = "app.api.${var.env_name == "prod" ? "" : var.env_name + "."}mydomain.com"
    }
}

Ошибка __builtin_StringToInt: strconv.ParseInt: parsing ""

Функция concat() в TF выглядит так:для списков, а не для строк.

Так как в заголовке написано: Как вы делаете простую конкатенацию строк в Terraform?

Не могу поверить, я спрашиваю, какconcat 2 строки вместе XD

Обновление:

Для тех, у кого есть похожая проблема, я сделал этот ужасающий временное решение:

main_api_gw = "app.api.${var.env_name == "prod" ? "" : var.env_name}${var.env_name == "prod" ? "" : "."}mydomain.com"

1 Ответ

4 голосов
/ 25 марта 2019

Попробуйте ниже ресурс данных:

data "null_data_source" "api_gw_url" {
    inputs = {
      main_api_gw = "app.api${var.env_name == "prod" ? "." : ".${var.env_name}."}mydomain.com"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...