使用azure python sdk将虚拟机保存到映像中

时间:2017-10-10 16:45:45

标签: azure virtual-machine azure-sdk-python

我一直在使用Microsoft Azure使用Azure SDK for Python构建虚拟机,现在我想从现有虚拟机创建托管图像。

我看到有一种方法可以在power shell here

中执行此操作

但经过长时间的研究后,我还没有找到如何在python sdk中做到这一点。 我的目标是能够将虚拟机保存到映像中并加载它 之后(我使用的是ARM,而不是ASM)。

2 个答案:

答案 0 :(得分:0)

创建计算客户端:

解除分配并概括:

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

创建一个图像,有一个操作组compute_client.images。我没有像你这样的确切示例,但是看到这个从blob创建一个图像(可以适应你的场景):

答案 1 :(得分:0)

经过很长时间的尝试,我终于能够从虚拟机中捕获图像。 首先,需要对虚拟机进行重新分配和推广:

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

我发现创建图像有两种选择:

  1. 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)

这些是什么,我不知道,也没有关于它们是什么的解释。所以我没有用这种方式

  1. (我选择使用的方式)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()对象,因为这是预期的对象类型