Я пытаюсь создать несколько контейнеров для хранения удаленного состояния для нескольких групп компонентов в Terraform.
В моей среде есть виртуальные машины инфраструктуры, внешнего интерфейса, серверной части и бастиона, каждая со своим собственным шаблоном .tf, так что я могу развернуть их по отдельности как функциональные единицы инфраструктуры.
Мне может потребоваться добавить другие типы позже, что говорит о том, что мне нужно сохранить список компонентов / сред как переменную, а затем просто разбить его, чтобы создать контейнеры внутреннего хранилища.
Основное предположение здесь заключается в том, что я могу использовать одну и ту же учетную запись хранения, но мне нужны отдельные контейнеры для каждого удаленного состояния, иначе они будут смешиваться.
- Верна ли эта оценка?
- Как мне выполнить sh это синтаксически, используя список или какое-либо другое устройство, которое минимизирует дублирование кода?
По общему признанию, я новичок в Terraform, поэтому я не схватывание какого-то базового c рудимента HCL. Вот отрывок из моего кода:
variable "component" {
type = list
default = ["bastion", "frontproxy", "db", "infra"]
}
provider "azurerm" {
version = "~> 2.8"
features {}
}
resource "azurerm_storage_account" "sa" {
name = "${lower(var.naming_prefix)}${random_integer.sa_num.result}"
resource_group_name = azurerm_resource_group.setup.name
location = var.location
account_tier = "Standard"
account_replication_type = "LRS"
}
resource "azurerm_storage_container" "ct" {
#count = length(var.component)
name = "terraform-state${var.component}"
storage_account_name = azurerm_storage_account.sa.name
}
Я пробовал использовать различные обозначения, включая «count» (закомментировано в примере выше) и ссылки на элементы в azurerm_storage_container.ct.name, et c. и не получил никакой тяги. Что мне здесь не хватает?