2016-04-11 2 views
1

Я хочу отключить «Обновления Windows» для развертывания виртуальных машин на основе ARM. Я нашел соответствующую настройку enableAutomaticUpdatesin a recent Microsoft.Compute provider schema. Но я не нашел шаблон ARM, используя этот параметр. Я искал пару Azure Quickstart templates, связанных с развертываниями Windows VM, но ни один из них не намерен контролировать поведение службы Windows Update во время подготовки. Я знаю варианты, доступные с моделью развертывания CLASSIC, но я явно ищу решение using Azure Resource Manager Deployment model.Отключить обновления Windows в шаблоне управления ресурсами Azure для развертывания виртуальной машины

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

... 

{ 
    "apiVersion": "2015-06-15", 
    "type": "Microsoft.Compute/virtualMachines", 
    "name": "[parameters('vmName')]", 
    "location": "[parameters('vmLocation')]", 
    "tags": { 
    "displayName": "VirtualMachine" 
    }, 
    "dependsOn": [ 
    "[concat('Microsoft.Storage/storageAccounts/', parameters('vmStorageAccountName'))]", 
    "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]" 
    ], 
    "properties": { 
    "hardwareProfile": { 
     "vmSize": "[parameters('vmSize')]" 
    }, 
    "osProfile": { 
     "computerName": "[parameters('vmName')]", 
     "adminUsername": "[parameters('adminUsername')]", 
     "adminPassword": "[parameters('adminPassword')]" 
    }, 
    "windowsConfiguration": { 
     "enableAutomaticUpdates": false   
    }, 
    ... 

Моя попытка использовать свойство windowsConfiguration в моем существующем шаблоне ARM приводит к неудавшейся развертывания и это сообщение об ошибке (как показано на Azure Portal).

Не удалось найти элемент 'windowsConfiguration' на объекте типа 'Свойства'. Путь 'properties.windowsConfiguration', строка 1, позиция 259. (Код: BadRequest)

Когда я обновить Microsoft.Compute до версии 2015-08-01, пытаясь передать схему, содержащую конфигурации свойство enableAutomaticUpdates, то С этим сообщением об ошибке не удается выполнить развертывание VM. Очевидно, я делаю что-то неправильно.

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

... 

{ 
    "apiVersion": "2015-08-01", 
    "type": "Microsoft.Compute/virtualMachines", 
    "name": "[parameters('vmName')]", 
    "location": "[parameters('vmLocation')]", 
    "tags": { 
    "displayName": "VirtualMachine" 
    }, 
    "dependsOn": [ 
    "[concat('Microsoft.Storage/storageAccounts/', parameters('vmStorageAccountName'))]", 
    "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]" 
    ], 
    "properties": { 
    "hardwareProfile": { 
     "vmSize": "[parameters('vmSize')]" 
    }, 
    "osProfile": { 
     "computerName": "[parameters('vmName')]", 
     "adminUsername": "[parameters('adminUsername')]", 
     "adminPassword": "[parameters('adminPassword')]" 
    }, 
    "windowsConfiguration": { 
     "enableAutomaticUpdates": false   
    }, 
    ... 

Нет зарегистрированный поставщик ресурсов не найдено для размещения 'Западная Европа' и версии API '2015-08-01' для 'virtualMachines' типа. Поддерживаемые версии api - «2015-05-01-preview, 2015-06-15, 2016-03-30». В поддерживаются локации "eastus, eastus2, westus, centralus, northcentralus, southcentralus, northeurope, westeurope, eastasia, southeastasia, japaneast, japanwest, australiaeast, australiasoutheast, brazilsouth. (Код: NoRegisteredProviderFound)

Я прошу некоторые рекомендации, как писать шаблоны ARM, которые используют Azure Compute Provider schema version 2015-08-01 отключить обновление Windows на время инициализации. В моем .NET-решении используется Azure SDK 2.7.1.

ответ

2

Я был близок к решению. Я просто неправильно понял схему. According to this part of the schema windowsConfiguration is part of osProfile. Если шаблон ARM написан так, как этот Azure Resource Manager понимает, что я хочу, и отключает AutomaticUpdates во время подготовки.

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

... 

{ 
    "apiVersion": "2015-06-15", 
    "type": "Microsoft.Compute/virtualMachines", 
    "name": "[parameters('vmName')]", 
    "location": "[resourceGroup().location]", 
    "tags": { 
    "displayName": "VirtualMachine" 
    }, 
    "dependsOn": [ 
    "[concat('Microsoft.Storage/storageAccounts/', parameters('vmStorageAccountName'))]", 
    "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]" 
    ], 
    "properties": { 
    "hardwareProfile": { 
     "vmSize": "[parameters('vmSize')]" 
    }, 
    "osProfile": { 
     "computerName": "[parameters('vmName')]", 
     "adminUsername": "[parameters('adminUsername')]", 
     "adminPassword": "[parameters('adminPassword')]", 
     "windowsConfiguration": { 
     "enableAutomaticUpdates": false   
     } 
    }, 
    ... 

Невероятная инструмент Resource Explorer in Azure Portal показывает текущую конфигурацию для данного ресурса. Как видите, для EnableAutomaticUpdates установлено значение false.

{ 
    "properties": { 
     "vmId": "10400cdd-26be-4be4-99d8-2d5c22d96911", 
     "hardwareProfile": { 
      "vmSize": "Standard_D2" 
     }, 
     "storageProfile": { 
      "imageReference": { 
       "publisher": "MicrosoftWindowsServer", 
       "offer": "WindowsServer", 
       "sku": "2012-R2-Datacenter", 
       "version": "latest" 
      }, 
      "osDisk": { 
       "osType": "Windows", 
       "name": "osdisk", 
       "createOption": "FromImage", 
       "vhd": { 
        "uri": "this_is_not_for_public_use" 
       }, 
       "caching": "ReadWrite" 
      }, 
      "dataDisks": [] 
     }, 
     "osProfile": { 
      "computerName": "this_is_not_for_public_use", 
      "adminUsername": "this_is_not_for_public_use", 
      "windowsConfiguration": { 
       "provisionVMAgent": true, 
       "enableAutomaticUpdates": false 
      }, 
      "secrets": [] 
     }, 
     "networkProfile": { 
      "networkInterfaces": [ 
       { 
        "id": "this_is_not_for_public_use/providers/Microsoft.Network/networkInterfaces/ComputeNode15-Nic" 
       } 
      ] 
     }, 
     "provisioningState": "Creating" 
    }, 
    "id": "this_is_not_for_public_use/providers/Microsoft.Compute/virtualMachines/this_is_not_for_public_use", 
    "name": "this_is_not_for_public_use", 
    "type": "Microsoft.Compute/virtualMachines", 
    "location": "westeurope", 
    "tags": { 
     "displayName": "VirtualMachine" 
    } 
} 

И я изменил шаблон, чтобы использовать расположение группы ресурсов - полезный вариант в большинстве случаев. Благодаря Мартину С за этот намек и за ценную обратную связь, влечет меня в правильном направлении.

+0

А я пропустил это полностью, извините! Рад, что вы его отсортировали, хотя –

1

Рассматривая приведенное выше сообщение об ошибке, вы передаете местоположение как «Западная Европа», когда это должно быть «westeurope». Названия регионов должны передаваться в нижнем регистре.

Вы можете просто использовать расположение группы ресурсов, используя следующую строку в шаблоне JSON: "location": "[resourceGroup().location]", что было бы лучше.

+0

Использование «Западной Европы» в качестве строки местоположения действует в соответствии с https://github.com/Azure/azure-resource-manager-schemas/blob/master/schemas/2015-01-01/deploymentTemplate.json# L307 –

+0

Не для свойства 'location'. Мои шаблоны, которые я только что экспортировал из портала, все говорят «северюропа» или «westeurope». Ссылка ссылается на другой параметр. –

+0

Эти развертывания выполняются с нескольких месяцев. Но может быть, ваш шаблон ссылается на другую схему. Обратите внимание на первую строку, ссылающуюся на https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json. Существуют ли различия в ваших шаблонах ARM? –