复制现有的正在运行的虚拟机 - Python SDK

时间:2018-03-23 17:26:24

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

有没有人有使用Python SDK(v:v2.0.0rc6)和克隆/复制正在运行的VM到另一个资源组的经验?

启动操作系统磁盘。还需要数据磁盘

managed_disk = self.compute_client.disks.get(resource_group_name=source_rg_name, disk_name=vm.storage_profile.os_disk.name)

制作os磁盘的快照。

self.compute_client.snapshots.create_or_update(
    self.config.resource_group_name,
    'SNAPSHOT-' + virtual_machine,
    {
        'location': managed_disk.location,
        'creation_data': {
            'create_option': 'Copy',
            'source_uri': managed_disk.id
        }
    }
)

创建VM。抛出以下异常。

result = self.compute_client.virtual_machines.create_or_update(
    self.config.cybric_resource_group_name,
    virtual_machine,
    azure.mgmt.compute.models.VirtualMachine(
        location=vm.location,
        os_profile=vm.os_profile,
        hardware_profile=vm.hardware_profile,
        network_profile=azure.mgmt.compute.models.NetworkProfile(
            network_interfaces=[
                azure.mgmt.compute.models.NetworkInterfaceReference(
                    id=nic_obj['id'],
                    primary=True
                ),
            ],
        ),
        storage_profile=azure.mgmt.compute.models.StorageProfile(
        os_disk=azure.mgmt.compute.models.OSDisk(
            caching=azure.mgmt.compute.models.CachingTypes.none,
            create_option=azure.mgmt.compute.models.DiskCreateOptionTypes.attach,
            name=dup_virtual_machine,
            managed_disk=azure.mgmt.compute.models.ManagedDiskParameters(
                id=managed_disk.id
            ),
        ),
        image_reference = azure.mgmt.compute.models.ImageReference(
            publisher=vm.storage_profile.image_reference.publisher,
            offer=vm.storage_profile.image_reference.offer,
            sku=vm.storage_profile.image_reference.sku,
            version=vm.storage_profile.image_reference.version,
        ),
    ),
    ),
)

例外:

  

无法创建虚拟机:Azure错误:InvalidParameter   消息:如果从a创建VM,则无法附加现有操作系统磁盘   平台或用户图像。目标:osDisk

1 个答案:

答案 0 :(得分:1)

错误日志原因是attach错误,您应该使用{{1}}而不是{{1}}。您可以在此link中查看Azure Python SDK。