首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过ARM模板向现有Vnet添加子网

通过ARM模板向现有Vnet添加子网
EN

Stack Overflow用户
提问于 2018-03-15 11:17:33
回答 1查看 1.8K关注 0票数 1

下面是我的输入参数文件(parameter.json)

代码语言:javascript
复制
    {
    "VNetSettings":{
    "value":{
        "name":"VNet2",
        "addressPrefixes":"10.0.0.0/16",
        "subnets":[
            {
                "name": "sub1",
                "addressPrefix": "10.0.1.0/24"
            },
            {
                "name":"sub2",
                "addressPrefix":"10.0.2.0/24"
            }
        ]
    }
  }
}

下面是我应该部署子网的arm模板。(deploy.json)

代码语言:javascript
复制
   {
"contentversion":"1.0.0.0",
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"parameters":{
        "VNetSettings":{"type":"object"},
"noofsubnets":
        {
            "type":"int"
        },
"newOrExisting":
    {
        "type":"string",
        "allowedvalues":
            [
                "new",
                "existing"
            ]
    }
    },
"resources":
[{
  "condition":"[equals(parameters('newOrExisting'),'new')]",
  "type": "Microsoft.Network/virtualNetworks",
  "mode":"Incremental",
  "apiVersion": "2015-06-15",
  "name":"[parameters('VNetSettings').name]",
  "location":"[resourceGroup().location]",
  "properties":
  {
    "addressSpace":{
        "addressPrefixes":["[parameters('VNetSettings').addressPrefixes]"]
  },
    "copy":
       [{
         "name":"subnets",
         "count":"[parameters('noofsubnets')]",
         "input": 
             {
              "name": "[parameters('VNetSettings').subnets[copyIndex('subnets')].name]",
              "properties":
                 {
                   "addressPrefix": "[parameters('VNetSettings').subnets[copyIndex('subnets')].addressPrefix]"
                 }
             }
        }]

       }
  }]
}

模板应该做的是将这两个子网(sub1和sub2)添加到Vnet中,如果已经存在one.But,则将这两个子网添加到Vnet。模式: Incremental应该这样做,但是我不确定我是否把它放在了正确的位置。我使用以下powershell命令部署此模板:

代码语言:javascript
复制
    New-AzureRmResourceGroupDeployment -Name testing -ResourceGroupName rgname -TemplateFile C:\Test\deploy.json -TemplateParameterFile C:\Test\parameterfile.json
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-15 13:21:32

这是预期的行为。你应该读一下“幂等性”。您需要做的是创建一个子网资源,这样您就可以绕过它了。

代码语言:javascript
复制
{
    "apiVersion": "2016-03-30",
    "name": "vnetName\subnetName",
    "location": "[resourceGroup().location]]",
    "type": "Microsoft.Network/virtualNetworks/subnets",
    "properties": {
        "addressPrefix": "xx.x.x.xx"
    }
}

vnetName必须是您要在其中创建资源的vnet。

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

https://stackoverflow.com/questions/49291024

复制
相关文章

相似问题

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