есть ли способ создать виртуальную машину поколения 2 с использованием Azure SDK?

#azure

#azure

Вопрос:

Azure поддерживает UEFI через виртуальную машину поколения 2.

Я могу создать виртуальную машину поколения 2 с помощью веб-консоли Azure, но я не могу указать способ создания виртуальной машины через Azure SDK.

В документах Microsoft я нашел ссылку для создания управляемого диска с использованием PowerCLI https://learn.microsoft.com/en-us/azure/virtual-machines/windows/generation-2#frequently-asked-questions

Я просмотрел онлайн-документацию Azure ComputeClient#virtual_machines#create_or_update () api. Но все еще не могу найти в документации по коду python какой-либо способ указать гипергенерации для виртуальной машины.

Ответ №1:

ДА. Это отчасти противоречит здравому смыслу, но это выглядит следующим образом: вам нужно указать поколение виртуальной машины на диске; тогда виртуальная машина, созданная с этого диска, будет того же поколения.

Если у вас уже есть диск gen2, вы просто выбираете его и указываете при создании виртуальной машины. Однако мне пришлось создать диск из файла VHD. Итак, когда вы создаете диск, вам понадобится IWithCreate экземпляр, а затем вызовите по цепочке WithHyperVGeneration метод. Вот так (C #):

     public async Task<IDisk> MakeDisk(string vhdPath)
    {
        return await Azure.Disks.Define(name)
            .WithRegion(Region.EuropeWest)
            .WithExistingResourceGroup("my-resources")
            .WithWindowsFromVhd(vhdPath)
            .WithStorageAccount("saname")
            .WithHyperVGeneration(HyperVGeneration.V2) // <--- This is how you specify the generation
            .WithSku(DiskSkuTypes.PremiumLRS)                
            .CreateAsync();
    }
  

Затем создайте виртуальную машину:

             var osDisk = await MakeDisk("template.vhd");

            var vm = await Azure.VirtualMachines.Define("template-vm")
                .WithRegion(Region.EuropWest)
                .WithExistingResourceGroup("the-rg")
                .WithExistingPrimaryNetworkInterface("some-nic")
                .WithSpecializedOSDisk(osDisk, OperatingSystemTypes.Windows) // <-- Pay attention
                .WithSize(VirtualMachineSizeTypes.StandardB2s)
                .CreateAsync();
  

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

1. Спасибо. Это сработало. Я проверил то же самое с помощью Python SDK