Создайте имя учетной записи хранилища Azure с объединенными переменными в Terraform

#variables #terraform #azure-storage #string-concatenation #azure-storage-account

Вопрос:

У нас есть требование создать учетную запись хранилища Azure в Terraform. Однако требуется соглашение об именовании для объединения трех объявленных переменных, что означает, что модуль будет выглядеть примерно так, как показано ниже:

 resource "azurerm_storage_account" "example" {
  name    = "(var.first)(var.second)(var.third)"
  resource_group_name      = "rg01"
  location                 = "uksouth"
  account_tier             = "Standard"
  account_replication_type = "GRS"
 

Это стало чем-то вроде борьбы, пытаясь достичь этого, и, изучив руководства по терраформированию, кажется, что нет никакой функции, которая могла бы позволить нам достичь этого. Есть какие-нибудь идеи или предложения?

Ответ №1:

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

 name    = "${var.first}${var.second}${var.third}"
 

Комментарии:

1. И то, и другое, я очень ценю ваш ответ. Возможно, вам также захочется знать, что вскоре после моего поста я попробовал эту другую реализацию, и она тоже отлично сработала: name = format("%s", "${var.sa_1}${var.sa_2}${var.sa_3}")

2. @hitman123 Рад, что все получилось. Если какой-либо из ответов окажется полезным, мы будем признательны за его принятие.

3. Кроме того, просто добавлю, что я попробовал оба варианта, представленные Марсином и Абинетом, и они работают, хотя я могу отметить только один из них как ответ, когда на самом деле должны быть оба.

Ответ №2:

Вы можете использовать формат():

 resource "azurerm_storage_account" "example" {
  name    = format("%s%s%s", var.first, var.second, var.third)
  resource_group_name      = "rg01"
  location                 = "uksouth"
  account_tier             = "Standard"
  account_replication_type = "GRS"
 

Комментарии:

1. Абинет, приношу извинения за случайное снижение голосов. Попытался его отменить, но продолжал получать сообщение об ошибке о том, что мой голос в настоящее время заблокирован, и я могу сделать это только в том случае, если ваш ответ отредактирован.

2. @hitman126 Я буду голосовать, чтобы компенсировать это:-)