Freigeben über


Verwenden von Azure Managed Disks mit den Azure-Bibliotheken (SDK) für Python

Azure Managed Disks sind leistungsstarke, dauerhafte Blockspeicher für die Verwendung mit virtuellen Azure-Computern und Azure VMware-Lösung. Sie vereinfachen die Datenträgerverwaltung, bieten eine höhere Skalierbarkeit, verbessern die Sicherheit und beseitigen die Notwendigkeit, Speicherkonten direkt zu verwalten. Weitere Informationen finden Sie unter Azure Managed Disks.

Verwenden Sie für Vorgänge auf verwalteten Datenträgern, die einer vorhandenen VM zugeordnet sind, die azure-mgmt-compute Bibliothek.

Die Codebeispiele in diesem Artikel veranschaulichen allgemeine Vorgänge mit verwalteten Datenträgern mithilfe der azure-mgmt-compute Bibliothek. Diese Beispiele sollen nicht als eigenständige Skripts ausgeführt werden, sondern in Ihren eigenen Code integriert werden. Informationen zum Erstellen einer ComputeManagementClient Instanz aus azure.mgmt.compute Ihrem Skript finden Sie unter Beispiel – Erstellen eines virtuellen Computers.

Ausführlichere Beispiele für die Verwendung der azure-mgmt-compute Bibliothek finden Sie unter Azure SDK für Python-Beispiele für die Berechnung in GitHub.

Eigenständige verwaltete Datenträger

Die folgenden Beispiele zeigen verschiedene Möglichkeiten zum Bereitstellen eigenständiger verwalteter Datenträger.

Erstellen eines leeren verwalteten Datenträgers

In diesem Beispiel wird gezeigt, wie Sie einen neuen leeren verwalteten Datenträger erstellen. Sie können ihn als leeren Datenträger verwenden, um ihn an eine virtuelle Maschine anzuhängen oder als Ausgangspunkt zum Erstellen von Momentaufnahmen oder Bildern zu nutzen.

from azure.mgmt.compute.models import DiskCreateOption

poller = compute_client.disks.begin_create_or_update(
    'my_resource_group',
    'my_disk_name',
    {
        'location': 'eastus',
        'disk_size_gb': 20,
        'creation_data': {
            'create_option': DiskCreateOption.empty
        }
    }
)
disk_resource = poller.result()

Erstellen eines verwalteten Datenträgers aus Blob-Speicher

In diesem Beispiel wird gezeigt, wie Sie einen verwalteten Datenträger aus einer VHD-Datei erstellen, die in Azure Blob Storage gespeichert ist. Dies ist hilfreich, wenn Sie eine vorhandene virtuelle Festplatte wiederverwenden oder in Azure verschieben möchten.

from azure.mgmt.compute.models import DiskCreateOption

poller = compute_client.disks.begin_create_or_update(
    'my_resource_group',
    'my_disk_name',
    {
        'location': 'eastus',
        'creation_data': {
            'create_option': DiskCreateOption.IMPORT,
            'storage_account_id': '/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>',
            'source_uri': 'https://<storage-account-name>.blob.core.windows.net/vm-images/test.vhd'
        }
    }
)
disk_resource = poller.result()

Erstellen Sie ein Image von verwalteten Datenträgern aus Blob-Speicher

Dieses Beispiel zeigt, wie Sie ein Image für verwaltete Datenträger aus einer VHD-Datei erstellen, die in Azure Blob Storage gespeichert ist. Dies ist nützlich, wenn Sie ein wiederverwendbares Image erstellen möchten, das zum Erstellen neuer virtueller Computer verwendet werden kann.

from azure.mgmt.compute.models import OperatingSystemStateTypes, HyperVGeneration

poller = compute_client.images.begin_create_or_update(
    'my_resource_group',
    'my_image_name',
    {
        'location': 'eastus',
        'storage_profile': {
           'os_disk': {
              'os_type': 'Linux',
              'os_state': OperatingSystemStateTypes.GENERALIZED,
              'blob_uri': 'https://<storage-account-name>.blob.core.windows.net/vm-images/test.vhd',
              'caching': "ReadWrite",
           },
        },
        'hyper_v_generation': HyperVGeneration.V2,
    }
)
image_resource = poller.result()

Erstellen Sie eine verwaltete Festplatte aus Ihrem eigenen Image.

In diesem Beispiel wird gezeigt, wie Sie einen neuen verwalteten Datenträger erstellen, indem Sie einen vorhandenen kopieren. Dies ist hilfreich, wenn Sie eine Sicherung erstellen oder dasselbe Datenträgersetup auf einem anderen virtuellen Computer verwenden möchten.

from azure.mgmt.compute.models import DiskCreateOption

# If you don't know the id, do a 'get' like this to obtain it
managed_disk = compute_client.disks.get(self.group_name, 'myImageDisk')

poller = compute_client.disks.begin_create_or_update(
    'my_resource_group',
    'my_disk_name',
    {
        'location': 'eastus',
        'creation_data': {
            'create_option': DiskCreateOption.COPY,
            'source_resource_id': managed_disk.id
        }
    }
)

disk_resource = poller.result()

Virtueller Computer mit verwalteten Datenträgern

Sie können einen virtuellen Computer mit einem implizit erstellten verwalteten Datenträger basierend auf einem bestimmten Datenträgerimage erstellen, sodass nicht alle Datenträgerdetails manuell definiert werden müssen.

Ein verwalteter Datenträger wird implizit beim Erstellen eines virtuellen Computers aus einem Betriebssystemimage in Azure erstellt. Azure behandelt das Speicherkonto automatisch, sodass Sie kein Speicherkonto manuell angeben storage_profile.os_disk oder erstellen müssen.

storage_profile = azure.mgmt.compute.models.StorageProfile(
    image_reference = azure.mgmt.compute.models.ImageReference(
        publisher='Canonical',
        offer='UbuntuServer',
        sku='16.04-LTS',
        version='latest'
    )
)

Ein vollständiges Beispiel zum Erstellen eines virtuellen Computers mithilfe der Azure-Verwaltungsbibliotheken für Python finden Sie unter Beispiel – Erstellen eines virtuellen Computers. In diesem Beispiel wird die Verwendung des storage_profile Parameters veranschaulicht.

Sie können auch ein storage_profile aus Ihrem eigenen Bild erstellen.

# If you don't know the id, do a 'get' like this to obtain it
image = compute_client.images.get(self.group_name, 'myImageDisk')

storage_profile = azure.mgmt.compute.models.StorageProfile(
    image_reference = azure.mgmt.compute.models.ImageReference(
        id = image.id
    )
)

Sie können auf einfache Weise einen zuvor bereitgestellten verwalteten Datenträger anfügen:

vm = compute_client.virtual_machines.get(
    'my_resource_group',
    'my_vm'
)
managed_disk = compute_client.disks.get('my_resource_group', 'myDisk')

vm.storage_profile.data_disks.append({
    'lun': 12, # You choose the value, depending of what is available for you
    'name': managed_disk.name,
    'create_option': DiskCreateOptionTypes.attach,
    'managed_disk': {
        'id': managed_disk.id
    }
})

async_update = compute_client.virtual_machines.begin_create_or_update(
    'my_resource_group',
    vm.name,
    vm,
)
async_update.wait()

Skalierungssätze für virtuelle Computer mit verwalteten Datenträgern

Vor Azure Managed Disks mussten Sie manuell ein Speicherkonto für jeden virtuellen Computer in Ihrem VM-Skalierungssatz erstellen und den vhd_containers Parameter verwenden, um diese Speicherkonten in der Scale Set-REST-API anzugeben.

Bei Azure Managed Disks ist die Speicherkontoverwaltung nicht mehr erforderlich. Daher können die storage_profile für VM-Skalierungsgruppen nun mit denen für die Erstellung einzelner VMs übereinstimmen, die für VM-Skalierungsgruppen verwendet werden.

'storage_profile': {
    'image_reference': {
        "publisher": "Canonical",
        "offer": "UbuntuServer",
        "sku": "16.04-LTS",
        "version": "latest"
    }
},

Das vollständige Beispiel lautet wie folgt:

naming_infix = "PyTestInfix"

vmss_parameters = {
    'location': self.region,
    "overprovision": True,
    "upgrade_policy": {
        "mode": "Manual"
    },
    'sku': {
        'name': 'Standard_A1',
        'tier': 'Standard',
        'capacity': 5
    },
    'virtual_machine_profile': {
        'storage_profile': {
            'image_reference': {
                "publisher": "Canonical",
                "offer": "UbuntuServer",
                "sku": "16.04-LTS",
                "version": "latest"
            }
        },
        'os_profile': {
            'computer_name_prefix': naming_infix,
            'admin_username': 'Foo12',
            'admin_password': 'BaR@123!!!!',
        },
        'network_profile': {
            'network_interface_configurations' : [{
                'name': naming_infix + 'nic',
                "primary": True,
                'ip_configurations': [{
                    'name': naming_infix + 'ipconfig',
                    'subnet': {
                        'id': subnet.id
                    }
                }]
            }]
        }
    }
}

# Create VMSS test
result_create = compute_client.virtual_machine_scale_sets.begin_create_or_update(
    'my_resource_group',
    'my_scale_set',
    vmss_parameters,
)
vmss_result = result_create.result()

Andere Vorgänge mit verwalteten Datenträgern

Ändern der Größe eines verwalteten Datenträgers

In diesem Beispiel wird gezeigt, wie Sie einen vorhandenen verwalteten Datenträger vergrößern. Dies ist nützlich, wenn Sie mehr Speicherplatz für Ihre Daten oder Anwendungen benötigen.

managed_disk = compute_client.disks.get('my_resource_group', 'myDisk')
managed_disk.disk_size_gb = 25

async_update = self.compute_client.disks.begin_create_or_update(
    'my_resource_group',
    'myDisk',
    managed_disk
)
async_update.wait()

Aktualisieren des Speicherkontotyps der verwalteten Datenträger

In diesem Beispiel wird gezeigt, wie Sie den Speichertyp eines verwalteten Datenträgers ändern und ihn vergrößern. Dies ist hilfreich, wenn Sie mehr Speicherplatz oder eine bessere Leistung für Ihre Daten oder Anwendungen benötigen.

from azure.mgmt.compute.models import StorageAccountTypes

managed_disk = compute_client.disks.get('my_resource_group', 'myDisk')
managed_disk.account_type = StorageAccountTypes.STANDARD_LRS

async_update = self.compute_client.disks.begin_create_or_update(
    'my_resource_group',
    'myDisk',
    managed_disk
)
async_update.wait()

Erstellen Sie ein Bild aus dem Blob-Speicher

Dieses Beispiel zeigt, wie Sie ein Image für verwaltete Datenträger aus einer VHD-Datei erstellen, die in Azure Blob Storage gespeichert ist. Dies ist nützlich, wenn Sie ein wiederverwendbares Image erstellen möchten, das Sie zum Erstellen neuer virtueller Computer verwenden können.

async_create_image = compute_client.images.create_or_update(
    'my_resource_group',
    'myImage',
    {
        'location': 'eastus',
        'storage_profile': {
            'os_disk': {
                'os_type': 'Linux',
                'os_state': "Generalized",
                'blob_uri': 'https://<storage-account-name>.blob.core.windows.net/vm-images/test.vhd',
                'caching': "ReadWrite",
            }
        }
    }
)
image = async_create_image.result()

Erstellen Sie eine Momentaufnahme eines verwalteten Datenträgers, der derzeit an eine virtuelle Maschine angehängt ist.

In diesem Beispiel wird gezeigt, wie Sie eine Momentaufnahme eines verwalteten Datenträgers erstellen, der an einen virtuellen Computer angefügt ist. Sie können die Momentaufnahme verwenden, um den Datenträger zu sichern oder später bei Bedarf wiederherzustellen.

managed_disk = compute_client.disks.get('my_resource_group', 'myDisk')

async_snapshot_creation = self.compute_client.snapshots.begin_create_or_update(
        'my_resource_group',
        'mySnapshot',
        {
            'location': 'eastus',
            'creation_data': {
                'create_option': 'Copy',
                'source_uri': managed_disk.id
            }
        }
    )
snapshot = async_snapshot_creation.result()

Siehe auch