Поднимите виртуальную машину Azure из образа marketplace через C#

#c# #azure #azure-marketplace

#c# #azure #azure-marketplace

Вопрос:

Не удается программно поднять виртуальную машину Azure из образа marketplace.

Код:

 var linuxVM = await _azure.VirtualMachines.Define(linuxVmName)
          .WithRegion(Region)
          .WithExistingResourceGroup(rgName)
          .WithNewPrimaryNetwork("10.0.0.0/28")
          .WithPrimaryPrivateIPAddressDynamic()
          .WithoutPrimaryPublicIPAddress()
          .WithSpecificLinuxImageVersion(new ImageReference())
          .WithRootUsername(userName)
          .WithRootPassword(password)
          .WithSize(VirtualMachineSizeTypes.StandardNC6sV3)
          .WithPlan(new PurchasePlan("nvidia", "ngc-base-version-20-10-1", "ngc_azure_17_11"))
          .CreateAsync();
 

В Azure я включил «Хотите развернуть программно? «Начало работы» для данного образа (как описано здесь ).

Существует несколько вариантов метода, который выбирает образ, но не уверен, какой метод следует использовать и с какими параметрами. Пробовал несколько комбинаций, но все возвращали разные сообщения об ошибках.

Не нашел примеров кода, более подробных (в которых не объясняется, как использовать изображение из marketplace).


Редактировать:

Приведенный выше код возвращает это исключение:

 Microsoft.Rest.Azure.CloudException: 'This resource was created without a plan. A new plan cannot be associated with an update.'
 

Другая попытка с более заполненными параметрами вызывает то же исключение:

 .WithSpecificLinuxImageVersion(new ImageReference(new ImageReferenceInner(
                          publisher: "nvidia",
                          offer: "ngc_azure_17_11",
                          sku: "ngc-base-version-20-10-1"
                          )))
 

Комментарии:

1. сможете ли вы поделиться подробностями об ошибке?

2. Я обновил вопрос

3. Где вы находите ссылку на изображение?

4. Это первая ссылка в вопросе («образ marketplace»): azuremarketplace.microsoft.com/en-us/marketplace/apps /…

Ответ №1:

Отсутствующим параметром была версия образа. Код для поднятия образа выглядит следующим образом:

     var vm = await _azure.VirtualMachines.Define(linuxVmName)
          .WithRegion(_region)
          .WithExistingResourceGroup(_rgName)
          .WithNewPrimaryNetwork("10.0.0.0/28")
          .WithPrimaryPrivateIPAddressDynamic()
          .WithoutPrimaryPublicIPAddress()
          .WithSpecificLinuxImageVersion(new ImageReference(new ImageReferenceInner(
              publisher: "nvidia",
              offer: "ngc_azure_17_11",
              sku: "ngc-base-version-20-10-1",
              version: "20.10.1"
              )))
          .WithRootUsername(userName)
          .WithRootPassword(password)
          .WithSize(VirtualMachineSizeTypes.StandardNC6sV3)
          .WithPlan(new PurchasePlan("nvidia", "ngc-base-version-20-10-1", "ngc_azure_17_11"))
          .CreateAsync();
 

Версию можно найти в пользовательском интерфейсе:
введите описание образа здесь

Также можно получить все детали изображения с помощью командной строки:

 Get-AzVMImageOffer -Location "West Europe" -PublisherName nvidia
 

Более полное руководство можно найти здесь