首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform使用for_each为选定子网创建天蓝色子网委托

Terraform使用for_each为选定子网创建天蓝色子网委托
EN

Stack Overflow用户
提问于 2021-09-13 01:48:20
回答 2查看 3.1K关注 0票数 3

我想要一些帮助,在选定的天蓝色子网上创建授权。我的代码如下所示。

在变量文件中定义的变量

代码语言:javascript
复制
variable “subnets” {
type = map(any)
}

我的tfvar文件包含以下值

代码语言:javascript
复制
subnets = {
mlops-aue-snt-aks = [“10.255.232.0/24”]
mlops-aue-snt-stg = [“10.255.233.0/26”]
mlops-aue-snt-kv = [“10.255.233.128/27”]
AzureBastionSubnet = [“10.255.233.160/27”]
mlops-aue-snt-shd = [“10.255.234.0/25”]
mlops-aue-snt-db1 = [“10.255.235.0/26”]
mlops-aue-snt-db2 = [“10.255.235.64/26”]
mlops-aue-snt-aci = [“10.255.235.128/26”]
}

这是我的子网代码

代码语言:javascript
复制
resource “azurerm_subnet” “azr_subnet” {
for_each = var.subnets

name = each.key
resource_group_name = azurerm_resource_group.rg.name
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = each.value
enforce_private_link_endpoint_network_policies = true
}

所有子网都是用这个创建的,这很好,但现在我需要为mlops snt-DB1和mlops snt-DB2添加service_delegation,其他子网也不一样。我不知道如何用我现有的代码来实现这一点。我无法将子网从代码中分离出来,因为它将强制删除现有子网并创建新的子网,这是不建议的。我确实读过一些关于使用动态块进行更改的文章,但不确定如何根据我的需求为选择性子网实现它。

有人能建议如何在地形上实现这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2021-09-13 03:24:55

您可以使用dynamic blocks和通过稍微更改subnets来实现这一点。

代码语言:javascript
复制
subnets = {
    mlops-aue-snt-aks = {
            cidr = [“10.255.232.0/24”]
            service_delegation = false
    }    
    # the rest in same format
    mlops-aue-snt-db1 = {
            cidr = [“10.255.235.0/26”]
            service_delegation = true
    }    
    mlops-aue-snt-db2 = {
            cidr = [“10.255.235.64/26”]
            service_delegation = true
    }
    # ...
}

然后

代码语言:javascript
复制
resource "azurerm_subnet" "azr_subnet" {
    for_each = var.subnets

    name = each.key
    resource_group_name = azurerm_resource_group.rg.name
    virtual_network_name = azurerm_virtual_network.vnet.name
    address_prefixes = each.value.cidr
    enforce_private_link_endpoint_network_policies = true
    
    dynamic "delegation" {
        for_each = each.value.service_delegation == "true" ? [1] : []
        
        content {
            name = "delegation"

            service_delegation {
            name    = "Microsoft.ContainerInstance/containerGroups"
            actions = ["Microsoft.Network/virtualNetworks/subnets/join/action", "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action"]
            }        
        }
    
    }
}
票数 4
EN

Stack Overflow用户

发布于 2022-10-06 20:17:32

看看这个存储库。这不是我的工作,也不是我的功劳。我刚刚决定分享它,这样它就可以对开发人员有用,为这个常见的问题寻找解决方案。

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

https://stackoverflow.com/questions/69156447

复制
相关文章

相似问题

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