如何解决将虚拟网络添加到现有的事件中心命名空间
我有一个 arm 模板,可以将新的虚拟网络添加到现有的事件中心命名空间。
问题是我必须硬编码,或者将 vnet 和子网地址前缀作为参数询问。
有没有办法不必这样做或提取这些值并在模板上使用? Vnet 存在 子网存在 使用引用函数获取值,但如果我在资源定义中使用它,则会出现循环定义错误。
尝试使用引用函数获取 vnet 和子网的 ip,但我无法在参数或变量中使用它,并且在资源中出现循环依赖错误。
基本上我喜欢在一个干净的模板上做这个。
"variables": {
"namespaceVirtualNetworkRuleName": "[concat(parameters('eventhubNamespaceName'),concat('/',parameters('vnetRuleName')))]","subNetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets/',parameters('vnetRuleName'),parameters('subnetName'))]"
},resources : [
{
"apiVersion": "2018-01-01-preview","name": "[variables('namespaceVirtualNetworkRuleName')]","type": "Microsoft.EventHub/namespaces/VirtualNetworkRules","properties": {
"virtualNetworkSubnetId": "[variables('subNetId')]"
}
}
]
但我必须添加具有正确 IP 的 vnet 和子网才能正常工作。
"variables": {
"namespaceVirtualNetworkRuleName": "[concat(parameters('eventhubNamespaceName'),parameters('subnetName'))]"
},"resources": [
{
"apiVersion": "2018-01-01-preview","name": "[parameters('eventhubNamespaceName')]","type": "Microsoft.EventHub/namespaces","location": "[parameters('location')]","sku": {
"name": "Standard","tier": "Standard"
},"properties": { }
},{
"apiVersion": "2017-09-01","name": "[parameters('vnetRuleName')]","type": "Microsoft.Network/virtualNetworks","properties": {
"addressSpace": {
"addressPrefixes": [
"a.b.c.0/24","x.y.0.0/16"
]
},"subnets": [
{
"name": "[parameters('subnetName')]","properties": {
"addressPrefix": "x.y.z.w/26","serviceEndpoints": [
{
"service": "Microsoft.EventHub"
}
]
}
}
]
}
},{
"apiVersion": "2018-01-01-preview","dependsOn": [
"[concat('Microsoft.EventHub/namespaces/',parameters('eventhubNamespaceName'))]"
],"properties": {
"virtualNetworkSubnetId": "[variables('subNetId')]"
}
}
]
关于 hou 删除 vnet 部分或在列表中获取模板之前的 ip 并将它们作为参数传递的任何想法?
解决方法
了解如何进行这项工作。 解决方案是这样的:
"variables": {
},"resources": [
{
"apiVersion": "2018-01-01-preview","name": "[parameters('eventhubNamespaceName')]","type": "Microsoft.EventHub/namespaces","location": "[resourceGroup().location]","sku": {
"name": "Standard","tier": "Standard"
},"properties": { }
},{
"apiVersion": "2018-01-01-preview","name": "[concat(parameters('eventhubNamespaceName'),concat('/',parameters('vnetSubscriptioID'),parameters('vnetResorceGroupName'),parameters('vnetRuleName'),parameters('subnetName')[copyIndex('subnetcopy')]))]","type": "Microsoft.EventHub/namespaces/VirtualNetworkRules","dependsOn": [
"[concat('Microsoft.EventHub/namespaces/',parameters('eventhubNamespaceName'))]"
],"properties": {
"virtualNetworkSubnetId": "[resourceId(parameters('vnetSubscriptioID'),'Microsoft.Network/virtualNetworks/subnets/',parameters('subnetName')[copyIndex('subnetcopy')])]"
},"copy": {
"name": "subnetcopy","count": "[length(parameters('subnetName'))]"
}
}
]
}
最后不需要网络部分。更新了我的解决方案,以便能够一次部署多个子网。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。