首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform:如何使用列表或地图在azurerm中提供多个存储容器?

Terraform:如何使用列表或地图在azurerm中提供多个存储容器?
EN

Stack Overflow用户
提问于 2020-05-07 17:17:52
回答 1查看 1.7K关注 0票数 0

我正在尝试创建多个存储容器,以存储Terraform中多个组件组的远程状态。

我的环境中有基础设施、前端、后端和堡垒vm,每个都有自己的.tf模板,这样我就可以将它们单独部署为基础结构的功能单元。

稍后我可能需要添加更多类型,这意味着我需要将组件/环境的列表存储为变量,然后通过它来创建后端存储容器。

这里的主要假设是,我可以使用相同的存储帐户,但是对于每个远程状态,我需要单独的容器,否则它们就混合在一起。

  1. 是正确的吗?
  2. 如何使用一个列表或其他设备来实现它?

诚然,我是一个土生土长的初学者,所以我希望我没有掌握一些基本的HCL雏形。以下是我代码的摘录:

代码语言:javascript
复制
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中引用元素等等,但没有得到任何支持。我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-08 01:58:06

对于评估,我认为这是不完全正确的。如果您只需要为每个精子组分提供一个状态文件。我想只有一个容器就够了。您可以为每个具有不同名称的精程序组件创建一个状态文件,以便直接找到具有特殊名称的特殊文件。如果您希望保留所有状态文件并为每个部署的一个组件设置不同的名称,那么评估是正确的,您需要多个容器来保存echo精子组件。

然后是Terraform代码,大多数代码都是正确的,所以您只需要像这样修改容器的代码:

代码语言:javascript
复制
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

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61663816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档