Поднять виртуальную машину Azure из образа Marketplace с помощью C #

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

Код:

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 я включил Хотите развернуть программно? Начните работу с данным изображением (как описано здесь ).

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

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


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

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

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

person Tom    schedule 07.12.2020    source источник
comment
Вы сможете поделиться подробностями об ошибке?   -  person Guru Pasupathy    schedule 08.12.2020
comment
Я обновил вопрос   -  person Tom    schedule 08.12.2020
comment
Где найти ссылку на изображение?   -  person Charles Xu    schedule 08.12.2020
comment
Это первая ссылка в вопросе (изображение торговой площадки): azuremarketplace.microsoft. ru / en-us / marketplace / apps /   -  person Tom    schedule 08.12.2020


Ответы (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

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

person Tom    schedule 13.12.2020