当前位置: 首页 > 知识库问答 >
问题:

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

卜勇
2023-03-14

提前感谢,我是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"]

    }
  }
}

我不确定我做错了什么。

我尝试使用[]括号作为参数,并得到了错误信息

“{”代码“:”部署失败“,”消息“:”至少一个资源部署操作失败。有关详细信息,请列出部署操作。请参阅https://aka.ms/arm-debug有关用法的详细信息。“,”详细信息“:[{”代码“:”BADDREQUEST“,”消息“:“{\r\n\”错误“:{\r\n\”代码“:\”无效请求格式“,\r\n\”消息“:\”无法解析请求“,\r\n\”详细信息“:[\r\n{\r\n\”代码“:”无效JSON\”,\r\n\”消息“:”错误转换值““10.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}]}”

共有1个答案

周作人
2023-03-14

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

        "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/en-us/azure/templates/microsoft.network/2018-11-01/virtualnetworks

ps.在你的情况下,如果你只想更新你的子网定义的vnet的DNS必须匹配实际的vnet子网定义,否则它会用你的输入覆盖它

 类似资料:
  • 部署VNET并将新部署的VNET与其他资源组中的现有VNET对等的Azure ARM模板? 请在下面找到JSON模板: {“$schema”:https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#,“内容版本”:“1.0。0.0", } 这就是我一直得到的错误:

  • 我有: 一个名为VNET_DEV01_CLASSIC2的V1 VNet(经典)。 我也有一个PowerShell脚本,它使用ARM模板创建一个WebApp(AppService)(在这里你可以看到模板)。 新的WebApp创建好,但我需要手动将其连接到V1 VNet 连接之后,它工作得非常好。 如何实现自动化?到目前为止,我尝试了两种方法都没有成功: 1) 正在更新ARM模板以使用连接创建它。我看

  • 我正在尝试创建一个ARM模板,该模板创建两个资源组,然后部署VNET并在它们之间创建对等。模板中的vNet对等资源不工作。我一直收到相同的错误,我相信这是因为我正在尝试使用VNET创建一个对等,该VNET位于与我部署到的VNET/资源组不同的VNET/资源组中。 我使用嵌套模板部署到单独的资源组中。 这就是我收到的错误 新AzureRmDeployment:16:13:36-资源Microsoft

  • 我们正在使用Visual Studio Team Services发布功能,我正在构建一个完全自动化的CI/CD管道。 我应该如何使用VSTS和ARM模板部署这种简单的Azure PaaS/SaaS应用程序,而不让自己陷入极限的角落? 欣赏

  • 我有个奇怪的问题。我有1个ARM模板,我用它部署2个环境。 删除完整的QA资源组后,我能够重新部署完全相同的ARM模板。看来资源组应该创建后的密钥库秘密?知道为什么吗?如果我们在生产中遇到这种情况,我们不希望删除完整的资源组

  • 我已经创建了服务主体,并授予了他对密钥库的所有权限。此外,我还在ARM模板中为密钥库启用了访问秘密。 使用powershell,我可以作为部署SP登录并检索秘密(证书)。 但是,在部署带有密钥存储库引用的ARM模板时,这不起作用。我得到以下错误: