Verwenden verwalteter Azure-Datenträger mit den Azure-Bibliotheken (SDK) für Python
Azure Managed Disks sind leistungsstarke, langlebige Blockspeicher, die für die Verwendung mit Azure Virtual Machines und Azure VMware Solution entwickelt wurden. Azure Managed Disks bieten vereinfachte Datenträgerverwaltung, verbesserte Skalierbarkeit, verbesserte Sicherheit und bessere Skalierung, ohne direkt mit Speicherkonten arbeiten zu müssen. Weitere Informationen finden Sie unter Azure Managed Disks.
Sie verwenden die azure-mgmt-compute
Bibliothek, um verwaltete Datenträger für einen vorhandenen virtuellen Computer zu verwalten.
Ein Beispiel zum Erstellen eines virtuellen Computers mit der azure-mgmt-compute
Bibliothek finden Sie unter Beispiel – Erstellen eines virtuellen Computers.
Die Codebeispiele in diesem Artikel veranschaulichen, wie Sie einige allgemeine Aufgaben mit verwalteten Datenträgern mithilfe der azure-mgmt-compute
Bibliothek ausführen. Sie können nicht wie folgt ausgeführt werden, sondern sind für Sie konzipiert, um sie in Ihren eigenen Code zu integrieren. Sie können beispiel - Erstellen eines virtuellen Computers , um zu erfahren, wie Sie eine Instanz in azure.mgmt.compute ComputeManagementClient
Ihrem Code erstellen, um die Beispiele auszuführen.
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
Sie können eigenständige verwaltete Datenträger auf vielfältige Weise erstellen, wie in den folgenden Abschnitten dargestellt.
Erstellen eines leeren verwalteten Datenträgers
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 über den Blobspeicher
Der verwaltete Datenträger wird von einer virtuellen Festplatte (Virtual Hard Disk, VHD) erstellt, die als BLOB gespeichert ist.
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 eines Images für einen verwalteten Datenträger über den Blobspeicher
Das verwaltete Datenträgerimage wird von einer virtuellen Festplatte (Virtual Hard Disk, VHD) erstellt, die als Blob gespeichert ist.
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 eines verwalteten Datenträgers anhand eines eigenen Images
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()
Virtuelle Computer mit verwalteten Datenträgern
Sie können einen virtuellen Computer mit einem impliziten verwalteten Datenträger für ein spezifisches Datenträgerimage erstellen. In diesem Fall müssen nicht sämtliche Details angegeben werden.
Ein verwalteter Datenträger wird implizit beim Erstellen eines virtuellen Computers aus einem Betriebssystemimage in Azure erstellt. Im Parameter storage_profile
ist os_disk
optional, und die Erstellung eines Speicherkontos ist keine Voraussetzung für die Erstellung eines virtuellen Computers.
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. Im Create-Beispiel verwenden Sie den storage_profile
Parameter.
Sie können storage_profile
auch mithilfe eines eigenen Images 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()
Skalierungsgruppen für virtuelle Computer mit Managed Disks
Vor der Einführung von verwalteten Datenträgern mussten Sie manuell ein Speicherkonto für alle virtuellen Computer erstellen, die in der Skalierungsgruppe enthalten sein sollten, und anschließend mit dem Auflistungsparameter vhd_containers
den vollständigen Speicherkontonamen an die REST-API der Skalierungsgruppe übergeben.
Da Sie keine Speicherkonten mit azure Managed Disks verwalten müssen, können Ihre storage_profile
Vm-Skalierungssätze jetzt genau mit dem von der VM-Erstellung verwendeten identisch sein:
'storage_profile': {
'image_reference': {
"publisher": "Canonical",
"offer": "UbuntuServer",
"sku": "16.04-LTS",
"version": "latest"
}
},
Das vollständige Beispiel sieht wie folgt aus:
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 Managed Disks
Ändern der Größe eines verwalteten Datenträgers
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
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 eines Images über den Blobspeicher
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 einer Momentaufnahme eines verwalteten Datenträgers, der derzeit an einen virtuellen Computer angefügt ist
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()
Weitere Informationen
- Beispiel: Erstellen eines virtuellen Computers
- Beispiel: Erstellen einer Ressourcengruppe
- Beispiel: Auflisten von Ressourcengruppen in einem Abonnement
- Beispiel: Erstellen von Azure Storage
- Beispiel: Verwenden von Azure Storage
- Beispiel: Erstellen und Verwenden einer MySQL-Datenbank
- Kurze Umfrage zum Azure SDK für Python