Lan*_*ons 4 azure azure-rm-template azure-bicep
我正在尝试引用现有的二头肌模块作为另一个资源的父级。
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
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我在执行时遇到错误
错误 BCP036:属性“parent”需要“Microsoft.Network/virtualNetworks”类型的值,但提供的值是“module”类型
我究竟做错了什么?
有两种方法可以实现此目的,如下所示。本质上,您可以将 vnet 和子网放入模块中,并使用 vnet 模块的输出作为子网模块的输入。看起来是这样main.bicep的。请注意,vnethub 模块需要输出 vnet 名称,您已经知道 rg.vnet 名称。
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
}
}
Run Code Online (Sandbox Code Playgroud)
该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'
}
Run Code Online (Sandbox Code Playgroud)
这是一种方式 - 在原始示例中您需要它的原因是(看起来)您没有 中的 vnet 名称main.bicep。如果您确实知道 vnet 的名称,则无需添加子网模块,只需将existing资源引用添加到main.bicep.
这有帮助吗?
| 归档时间: |
|
| 查看次数: |
7706 次 |
| 最近记录: |