我正在尝试创建多个存储容器,以存储Terraform中多个组件组的远程状态。
我的环境中有基础设施、前端、后端和堡垒vm,每个都有自己的.tf模板,这样我就可以将它们单独部署为基础结构的功能单元。
稍后我可能需要添加更多类型,这意味着我需要将组件/环境的列表存储为变量,然后通过它来创建后端存储容器。
这里的主要假设是,我可以使用相同的存储帐户,但是对于每个远程状态,我需要单独的容器,否则它们就混合在一起。
诚然,我是一个土生土长的初学者,所以我希望我没有掌握一些基本的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中引用元素等等,但没有得到任何支持。我在这里错过了什么?
发布于 2020-05-08 01:58:06
对于评估,我认为这是不完全正确的。如果您只需要为每个精子组分提供一个状态文件。我想只有一个容器就够了。您可以为每个具有不同名称的精程序组件创建一个状态文件,以便直接找到具有特殊名称的特殊文件。如果您希望保留所有状态文件并为每个部署的一个组件设置不同的名称,那么评估是正确的,您需要多个容器来保存echo精子组件。
然后是Terraform代码,大多数代码都是正确的,所以您只需要像这样修改容器的代码:
resource "azurerm_storage_container" "ct" {
count = length(var.component)
name = "terraform-state-${element(var.component, count.index)}"
storage_account_name = azurerm_storage_account.sa.name
}https://stackoverflow.com/questions/61663816
复制相似问题