我正在尝试创建多个存储容器来存储 Terraform 中多个组件组的远程状态。
我的环境中有基础设施、前端、后端和堡垒 vm,每个都有自己的 .tf 模板,因此我可以将它们单独部署为基础设施的功能单元。
稍后我可能需要添加更多类型,这表明我需要将组件/环境列表存储为变量,然后将其分块以创建后端存储容器。
这里的主要假设是我可以使用相同的存储帐户,但我需要为每个远程状态提供单独的容器,否则它们会混合在一起。
- 那个评价是真的吗?
- 如何使用列表或其他可以最大限度地减少代码重复的设备在语法上完成它?
诚然,我是 Terraform 初学者,所以我希望我没有掌握 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
}
我尝试了各种符号,包括“计数”(在上面的示例中注释掉)和引用 azurerm_storage_container.ct.name 中的元素等,但没有得到任何牵引力。我在这里想念什么?