我想創建多個存盤帳戶,并在每個存盤帳戶中創建一些容器。如果我想要 3 個存盤帳戶,我總是想在這 3 個存盤帳戶中創建容器 a 和容器 b
所以例如會。存盤帳戶串列 ["sa1","sa2","sa3"]。
resource "azurerm_storage_account" "storage_account" {
count = length(var.list)
name = var.name
resource_group_name = module.storage-account-resource-group.resource_group_name[0]
location = var.location
account_tier = var.account_tier
account_kind = var.account_kind
然后是容器塊
resource "azurerm_storage_container" "container" {
depends_on = [azurerm_storage_account.storage_account]
count = length(var.containers)
name = var.containers[count.index].name
container_access_type = var.containers[count.index].access_type
storage_account_name = azurerm_storage_account.storage_account[0].name
容器變數:
variable "containers" {
type = list(object({
name = string
access_type = string
}))
default = []
description = "List of storage account containers."
}
串列變數
variable "list" {
type = list(string)
description = "the env to deploy. ['dev','qa','prod']"
此代碼將僅在第一個存盤帳戶“sa1”中創建一個容器,而不在其他兩個“sa2”和“sa3”中創建一個容器。我讀到我需要為每個使用 2 來迭代存盤帳戶和 continaers 串列,但不確定它的代碼應該如何。
uj5u.com熱心網友回復:
最好使用for_each:
resource "azurerm_storage_account" "storage_account" {
for_each = toset(var.list)
name = var.name
resource_group_name = module.storage-account-resource-group.resource_group_name[0]
location = var.location
account_tier = var.account_tier
account_kind = var.account_kind
}
那么你需要一個等效的雙for回圈,你可以使用setproduct獲得:
locals {
flat_list = setproduct(var.list, var.containers)
}
然后你使用local.flat_list容器:
resource "azurerm_storage_container" "container" {
for_each = {for idx, val in local.flat_list: idx => val}
name = each.value.name[1].name
container_access_type = each.value.name[1].access_type
storage_account_name = azurerm_storage_account.storage_account[each.value[0]].name
}
ps 我還沒有運行代碼,因此它可能需要一些調整,但這個想法仍然有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/416134.html
標籤:
