обновление DNS существующего VNET с использованием шаблона ARM - PullRequest
0 голосов
/ 06 апреля 2019

Заранее спасибо, я новичок в шаблонах ARM и все еще изучаю, как он работает. У меня есть VNET с ресурсами в нем, адресное пространство VNET - 10.0.0.0/16, и оно содержит одну подсеть с адресным пространством 10.0.0.0/16. Я пытаюсь обновить DNS, используя шаблон ARM, и выдает ошибку

"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"]

    }
  }
}

Я не уверен, что делаю не так.

Я попытался использовать скобку [] для параметра и получение ошибки

"{" code ":" DeploymentFailed "," message ":" Сбой хотя бы одной операции развертывания ресурса. Пожалуйста, перечислите операции развертывания для деталей. Подробнее об использовании см. https://aka.ms/arm-debug. "," Details ": [{" code ":" BadRequest "," message ":" {\ r \ n \ "error \": {\ r \ n \ "code \": \ "InvalidRequestFormat \", \ r \ n \ "message \": \ "Невозможно проанализировать запрос. \", \ r \ n \ "details \": [\ r \ n {\ r \ n \ "code \": \ "InvalidJson \", \ r \ n \ "message \": \ "Ошибка преобразования значения \" 10.0.0.0/16 \ "в тип« Microsoft.WindowsAzure.Networking.Nrp.Frontend. Contract.Csm.Public.Subnet '. Path' properties.subnets [0] ', строка 1, позиция 153. \ "\ R \ n} \ r \ n] \ r \ n} \ r \ n}"}] } "

1 Ответ

1 голос
/ 06 апреля 2019

определение вашей подсети - это просто массив, но это должен быть массив объектов, например:

        "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

пс. в вашем случае, если вы хотите обновить только DNS для виртуальной сети, ваше определение подсети должно совпадать с фактическим определением подсети виртуальной сети, в противном случае оно будет перезаписано с вашим вводом

...