После долгих попыток понять это, я наконец смог сделать снимок с vm. Во-первых, необходимо освободить и обобщить виртуальную машину:
# Deallocate
async_vm_deallocate = self.compute_client.virtual_machines.deallocate(resource_group.name, names.vm)
async_vm_deallocate.wait()
# Generalize (possible because deallocated)
self.compute_client.virtual_machines.generalize(resource_group.name, names.vm)
Я обнаружил, что есть 2 варианта создания изображения:
compute_client.virtual_machines.capture(resource_group_name=resource_group.name, vm_name=vm.name, parameters=parameters)
для этого требуется создать ComputeManagmentClient и следующий импорт:
from azure.mgmt.compute.v2015_06_15.models import VirtualMachineCaptureParameters
параметры должны иметь тип объекта: ~ azure.mgmt.compute.v2015_06_15.models.VirtualMachineCaptureParameters.
У объекта VirtualMachineCaptureParameters есть 3 обязательных параметра: vhd_name_prefix (str), имя целевого контейнера (str), перезапись vhds (bool).
что это такое, я понятия не имею, и нет объяснения, что это такое. так что я не использовал этот способ
- (как я предпочитаю использовать)
compute_client.images.create_or_update(resource_group_name=resource_group, image_name=unique_name, parameters=params)
для этого требуется создать ComputeManagmentClient и следующий импорт:
from azure.mgmt.compute.v2020_06_01.models import Image, SubResource
и это довольно просто
sub_resource = SubResource(id=vm.id)
params = Image(location=LOCATION, source_virtual_machine=sub_resource)
i = compute_client.images.create_or_update(resource_group_name=resource_group, image_name=image_name, parameters=params)
i.wait()
создание объектов SubResource () и Image () является обязательным, поскольку это ожидаемый тип объекта.
person
ShaiB
schedule
01.10.2020