繁体   English   中英

使用ARM模板更新现有VNET的DNS

[英]updating DNS of existing VNET using ARM template

在此先感谢您,我是ARM模板的新手,仍然在学习它的工作原理。 我有一个带有资源的VNET,VNET地址空间为10.0.0.0/16,它包含一个地址空间为10.0.0.0/16的单个子网。我正在尝试使用ARM模板更新DNS,并且抛出错误

"New-AzureRmResourceGroupDeployment : 11.50.14 PM - Error: Code=InvalidTemplate; Message=Deployment template validation failed: 'The provided value for the template parameter 'virtualNetworkSubnetaddress' at line 
'26' and column '40' is not valid.'."

这是我的部署文件

  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",

  "contentVersion": "1.0.0.0",

  "parameters": {

    "location": {

      "type": "string",

      "metadata": {

        "Description": "The region to deploy the resources into"

      }

    },

    "virtualNetworkName": {

      "type": "string",

      "metadata": {

        "Description": "The name of the Virtual Network"

      }

    },

    "virtualNetworkAddressRange": {

      "type": "string",

      "metadata": {

        "Description": "The address range of the virtual network in CIDR format"

      },

      "defaultValue": "10.0.0.0/16"

    },


    "virtualNetworkSubnetaddress": {

      "type": "array",

      "metadata": {

        "Description": "The subnet definition for the virtual network"

      }

    },

    "dnsAddress": {

      "type": "array",

      "metadata": {

        "Description": "The DNS address(es) of the DNS Server(s) used by the virtual network"

      }

    },
  },

  "resources": [

    {

      "name": "[parameters('virtualNetworkName')]",

      "type": "Microsoft.Network/virtualNetworks",

      "location": "[parameters('location')]",

      "apiVersion": "2018-02-01",

      "properties": {

        "addressSpace": {

          "addressPrefixes": [

            "[parameters('virtualNetworkAddressRange')]"

          ]

        },

        "dhcpOptions": {

          "dnsServers": "[parameters('dnsAddress')]"

        },

        "subnets": "[parameters('virtualNetworkSubnetaddress')]"

      }

    }

  ],

  "outputs": {}

}

下面是我的参数文件

{

  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",

  "contentVersion": "1.0.0.0",

  "parameters": {
    "dnsaddress": {

      "value": ["10.0.0.4"]

    },
    "location": {

      "value": "East US"

    },
    "virtualNetworkAddressRange": {

      "value": "10.0.0.0/16"

    },
    "virtualNetworkName": {

      "value": "vnettest"

    },
    "virtualNetworkSubnetaddress": {

      "value": ["10.0.0.0/16"]

    }
  }
}

我不确定自己在做什么错。

我尝试使用[]括号作为参数并出现错误

“ {”代码“:” DeploymentFailed“,”消息“:”至少一项资源部署操作失败。 请列出部署操作以获取详细信息。 有关用法的详细信息,请参见https://aka.ms/arm-debug 。“,”详细信息“:[{”代码“:” BadRequest“,”消息“:” {\\ r \\ n \\“错误\\”:{ \\ r \\ n \\“代码\\”:\\“ InvalidRequestFormat \\”,\\ r \\ n \\“消息\\”:\\“无法解析请求。\\”,\\ r \\ n \\“详细信息\\”:[\\ r \\ n {\\ r \\ n \\“ code \\”:\\“ InvalidJson \\”,\\ r \\ n \\“ message \\”:\\“将值\\” 10.0.0.0/16 \\“转换为键入'Microsoft.WindowsAzure.Networking时出错.Nrp.Frontend.Contract.Csm.Public.Subnet'。路径'properties.subnets [0]',第1行,位置153。\\“ \\ r \\ n} \\ r \\ n] \\ r \\ n} \\ r \\ N} “}]}”

您的子网定义只是一个数组,但是应该是一个对象数组,如下所示:

        "subnets": [
          {
            "name": "[variables('subnet1Name')]",
            "properties": {
              "addressPrefix": "10.0.0.0/24"
            }
          },
          {
            "name": "[variables('subnet2Name')]",
            "properties": {
              "addressPrefix": "10.0.1.0/24"
            }
          }
        ]

示例: https//github.com/Azure/azure-quickstart-templates/blob/master/101-1vm-2nics-2subnets-1vnet/azuredeploy.json#L139

参考: https : //docs.microsoft.com/zh-cn/azure/templates/microsoft.network/2018-11-01/virtualnetworks

PS。 在您的情况下,如果您只想为vnet更新DNS,则您的子网定义必须与实际的vnet子网定义匹配,否则它将被您的输入覆盖

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM