gpt4 book ai didi

azure - 如何使用 Terraform 将现有多个 Azure 策略分配给多个资源

转载 作者:行者123 更新时间:2023-12-03 02:09:53 26 4
gpt4 key购买 nike

我正在将开源 Terraform 与 A​​ZURE 结合使用,但我陷入了以下任务。如果您有更好的解决方案,请指教。

我的列表中有 Azure 策略的 ID

  variable "existing_policy_ids" {
"policy-id1",
"policy-id2",
"policy-id3",
......
}

我需要将所有这些策略动态分配给 Azure 中的资源组。资源组具有如下所示的计数元参数:

resource "azurerm_resource_group" "my-rg" {
count = var.environment == "dev" ? 1 : 2
name = "my-rg-${count.index}"
location = var.rg_location
}

现在的问题是 - 策略分配应该是什么样子,因为有多个策略 (10),而资源组可以是 1 或 2,具体取决于环境。意味着我不能使用标准的 count 或 for_each 方式?!

resource "azurerm_resource_group_policy_assignment" "assign-policy" {

count = length(azurerm_resource_group.my-rg.id)
name = "${azurerm_resource_group.my-rg[count.index].name}"
policy_definition_id = var.existing_policy_id[count.index] # ISSUE
resource_group_id = azurerm_resource_group.my-rg[count.index].id # ISSUE

}

现在策略分配 block 的最后两行是我陷入困境的地方。如果我使用 count.index 那么计数器只会运行一次或最多 2 次。而政策则多于2。

现在,我如何编码,为创建的每个 resource_group 分配我在变量 existing_policy_ids 中拥有的所有策略。

先谢谢大家了!

最佳答案

您已迭代了 existing_policy_idsazurerm_resource_group 数量的累积列表。在你的情况下,你可以使用 setproduct为此。

locals {
cummulative_list = setproduct(
range(length(azurerm_resource_group.my-rg)),
var.existing_policy_ids)
}

resource "azurerm_resource_group_policy_assignment" "assign-policy" {
count = length(local.cummulative_list)
name = azurerm_resource_group.my-rg[local.cummulative_list[count.index][0]].name
policy_definition_id = local.cummulative_list[count.index][1]
resource_group_id = azurerm_resource_group.my-rg[local.cummulative_list[count.index][0]].id
}

关于azure - 如何使用 Terraform 将现有多个 Azure 策略分配给多个资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73714177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com