gpt4 book ai didi

azure - Bicep 模块引用作为另一个资源中的父级

转载 作者:行者123 更新时间:2023-12-02 22:57:11 26 4
gpt4 key购买 nike

我正在尝试引用现有的二头肌模块作为另一个资源的父级。

module vnethub 'modules/vnet/vnet.bicep' = {
scope: resourceGroup(rg.name)
name: 'hub-VNet'
params: {
vnetAddressSpace: {
addressPrefixes: hubVNETaddPrefixes
}
vnetNamePrefix: 'hub'
subnets: [
hubVNETdefaultSubnet
hubVNETfirewalSubnet
hubVNETVMSubnet
hubVNETBastionSubnet
]
}
dependsOn: [
rg
]
}


.
.
.

resource subnetfw 'Microsoft.Network/virtualNetworks/subnets@2020-11-01' existing = {
scope: resourceGroup(rg.name)
name: '${vnethub.name}/AzureFirewallSubnet'
parent: vnethub
}

当我这样做时,我在执行时遇到错误

错误 BCP036:属性“parent”需要“Microsoft.Network/virtualNetworks”类型的值,但提供的值是“module”类型

我做错了什么?

最佳答案

有两种方法可以实现此目的,如下所示。本质上,您可以将 vnet 和子网放入模块中,并使用 vnet 模块的输出作为子网模块的输入。 main.bicep 如下所示。请注意,vnethub 模块需要输出 vnet 名称,您已经知道 rg。

module vnethub 'vnet.bicep' = {
scope: resourceGroup(rg.name)
name: 'hub-VNet'
params: { ... }
}

module subnetfw 'subnet.bicep' = {
scope: resourceGroup(rg.name)
name: 'subnetfw'
params: {
rg: rg
vnetName: vnethub.outputs.vnetName
}
}

subnet.bicep 模块将是:

param rg object
param vnetName string

resource vnet 'Microsoft.Network/virtualNetworks@2021-05-01' existing = {
scope: resourceGroup(rg.name)
name: vnetName
}

resource subnetfw 'Microsoft.Network/virtualNetworks/subnets@2020-11-01' existing = {
parent: vnet
name: 'AzureFirewallSubnet'
}

这是一种方式 - 在原始示例中您需要它的原因是(看起来)您在 main.bicep 中没有 vnet 的名称。如果您确实知道 vnet 的名称,则无需添加子网模块,只需将现有资源引用添加到main.bicep即可。

这有帮助吗?

关于azure - Bicep 模块引用作为另一个资源中的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71486988/

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