Używanie usługi Azure Dyski zarządzane z bibliotekami platformy Azure (SDK) dla języka Python
Dyski zarządzane na platformie Azure to trwały magazyn blokowy o wysokiej wydajności zaprojektowany do użycia z usługami Azure Virtual Machines i Azure VMware Solution. Usługa Azure Dyski zarządzane zapewnia uproszczone zarządzanie dyskami, zwiększoną skalowalność, lepsze zabezpieczenia i lepsze skalowanie bez konieczności bezpośredniej pracy z kontami magazynu. Aby uzyskać więcej informacji, zobacz Azure Dyski zarządzane.
Biblioteka służy azure-mgmt-compute
do administrowania Dyski zarządzane dla istniejącej maszyny wirtualnej.
Aby zapoznać się z przykładem tworzenia maszyny wirtualnej z biblioteką azure-mgmt-compute
, zobacz Przykład — tworzenie maszyny wirtualnej.
Przykłady kodu w tym artykule pokazują, jak wykonywać niektóre typowe zadania z dyskami zarządzanymi przy użyciu azure-mgmt-compute
biblioteki. Nie są one uruchamiane tak, jak to jest, ale są przeznaczone do uwzględnienia we własnym kodzie. Możesz zapoznać się z przykładem — tworzenie maszyny wirtualnej, aby dowiedzieć się, jak utworzyć wystąpienie azure.mgmt.compute ComputeManagementClient
w kodzie, aby uruchomić przykłady.
Aby uzyskać więcej kompletnych przykładów korzystania z azure-mgmt-compute
biblioteki, zobacz Azure SDK for Python samples for Compute in GitHub (Zestaw Azure SDK dla języka Python dla przykładów dla obliczeń w usłudze GitHub).
Autonomiczna Dyski zarządzane
Autonomiczne Dyski zarządzane można utworzyć na wiele sposobów, jak pokazano w poniższych sekcjach.
Tworzenie pustego dysku zarządzanego
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()
Tworzenie dysku zarządzanego z magazynu obiektów blob
Dysk zarządzany jest tworzony na podstawie wirtualnego dysku twardego (VHD) przechowywanego jako obiekt blob.
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()
Tworzenie obrazu dysku zarządzanego z magazynu obiektów blob
Obraz dysku zarządzanego jest tworzony na podstawie wirtualnego dysku twardego (VHD) przechowywanego jako obiekt blob.
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()
Tworzenie dysku zarządzanego na podstawie własnego obrazu
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()
Maszyna wirtualna z Dyski zarządzane
Możesz utworzyć maszynę wirtualną z niejawnym dyskiem zarządzanym dla określonego obrazu dysku, co pozwala na określenie wszystkich szczegółów.
Dysk zarządzany jest tworzony niejawnie podczas tworzenia maszyny wirtualnej na podstawie obrazu systemu operacyjnego na platformie Azure. W parametrze storage_profile
os_disk
parametr jest opcjonalny i nie musisz tworzyć konta magazynu zgodnie z wymaganiami wstępnymi, aby utworzyć maszynę wirtualną.
storage_profile = azure.mgmt.compute.models.StorageProfile(
image_reference = azure.mgmt.compute.models.ImageReference(
publisher='Canonical',
offer='UbuntuServer',
sku='16.04-LTS',
version='latest'
)
)
Aby zapoznać się z kompletnym przykładem tworzenia maszyny wirtualnej przy użyciu bibliotek zarządzania platformy Azure, zobacz Przykład — tworzenie maszyny wirtualnej. W przykładzie tworzenia użyjesz parametru storage_profile
.
Możesz również utworzyć obiekt storage_profile
na podstawie własnego obrazu:
# 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
)
)
Możesz łatwo dołączyć wcześniej aprowizowany dysk zarządzany:
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()
Zestawy skalowania maszyn wirtualnych z Dyski zarządzane
Przed Dyski zarządzane musisz ręcznie utworzyć konto magazynu dla wszystkich maszyn wirtualnych, które chcesz użyć w zestawie skalowania, a następnie użyć parametru vhd_containers
listy, aby podać całą nazwę konta magazynu do interfejsu RESTAPI zestawu skalowania.
Ponieważ nie musisz zarządzać kontami magazynu za pomocą usługi Azure Dyski zarządzane, usługa storage_profile
Virtual Machine Scale Sets może teraz być dokładnie taka sama jak używana w tworzeniu maszyn wirtualnych:
'storage_profile': {
'image_reference': {
"publisher": "Canonical",
"offer": "UbuntuServer",
"sku": "16.04-LTS",
"version": "latest"
}
},
Pełny przykład wygląda następująco:
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()
Inne operacje z Dyski zarządzane
Zmiana rozmiaru dysku zarządzanego
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()
Aktualizowanie typu konta magazynu Dyski zarządzane
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()
Tworzenie obrazu z magazynu obiektów blob
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()
Tworzenie migawki dysku zarządzanego, który jest obecnie dołączony do maszyny wirtualnej
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()
Zobacz też
- Przykład: tworzenie maszyny wirtualnej
- Przykład: tworzenie grupy zasobów
- Przykład: Wyświetlanie listy grup zasobów w subskrypcji
- Przykład: tworzenie usługi Azure Storage
- Przykład: korzystanie z usługi Azure Storage
- Przykład: tworzenie i używanie bazy danych MySQL
- Wykonaj krótką ankietę dotyczącą zestawu Azure SDK dla języka Python