Bagikan melalui


Menggunakan Azure Managed Disks dengan pustaka Azure (SDK) untuk Python

Azure Managed Disks adalah penyimpanan blok berkinerja tinggi dan tahan lama yang dirancang untuk digunakan dengan Azure Virtual Machines dan Azure VMware Solution. Mereka menyederhanakan manajemen disk, menawarkan skalabilitas yang lebih besar, meningkatkan keamanan, dan menghilangkan kebutuhan untuk mengelola akun penyimpanan secara langsung. Untuk informasi selengkapnya, lihat Disk Terkelola Azure.

Untuk operasi pada Disk Terkelola yang terkait dengan VM yang ada, gunakan pustaka azure-mgmt-compute.

Contoh kode dalam artikel ini menunjukkan operasi umum dengan Disk Terkelola menggunakan perpustakaan azure-mgmt-compute. Contoh-contoh ini tidak dimaksudkan untuk dijalankan sebagai skrip mandiri, melainkan diintegrasikan ke dalam kode Anda sendiri. Untuk mempelajari cara membuat ComputeManagementClient instans dari azure.mgmt.compute dalam skrip Anda, lihat Contoh - Membuat komputer virtual.

Untuk contoh lengkap selengkapnya tentang cara menggunakan azure-mgmt-compute pustaka, lihat Azure SDK untuk sampel Python untuk komputasi di GitHub.

Disk Terkelola Mandiri

Contoh berikut menunjukkan berbagai cara untuk menyediakan Disk Terkelola mandiri.

Membuat Disk Terkelola kosong

Contoh ini menunjukkan cara membuat Disk Terkelola kosong baru. Anda dapat menggunakannya sebagai disk kosong untuk melampirkan ke komputer virtual atau sebagai titik awal untuk membuat rekam jepret atau gambar.

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

Membuat Disk Terkelola dari penyimpanan blob

Contoh ini menunjukkan cara membuat Disk Terkelola dari file VHD yang disimpan di Azure Blob Storage. Ini berguna ketika Anda ingin menggunakan kembali atau memindahkan hard disk virtual yang ada ke Azure.

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

Buat citra Disk Terkelola dari penyimpanan blob

Contoh ini menunjukkan cara membuat gambar Disk Terkelola dari file VHD yang disimpan di Azure Blob Storage. Ini berguna ketika Anda ingin membuat gambar yang dapat digunakan kembali yang dapat digunakan untuk membuat komputer virtual baru.

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

Membuat Disk Terkelola dari gambar Anda sendiri

Contoh ini menunjukkan cara membuat Disk Terkelola baru dengan menyalin disk yang sudah ada. Ini berguna ketika Anda ingin membuat cadangan atau menggunakan penyiapan disk yang sama pada komputer virtual lain.

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

Komputer virtual dengan Disk Terkelola

Anda dapat membuat komputer virtual dengan Disk Terkelola yang dibuat secara implisit berdasarkan gambar disk tertentu, menghilangkan kebutuhan untuk menentukan semua detail disk secara manual.

Disk Terkelola dibuat secara implisit saat membuat VM dari gambar OS di Azure. Azure secara otomatis menangani akun penyimpanan, sehingga Anda tidak perlu menentukan storage_profile.os_disk atau membuat akun penyimpanan secara manual.

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

Untuk contoh lengkap yang menunjukkan cara membuat komputer virtual menggunakan pustaka manajemen Azure untuk Python, lihat Contoh - Membuat komputer virtual. Contoh ini menunjukkan cara menggunakan storage_profile parameter .

Anda juga dapat membuat storage_profile dari gambar Anda sendiri:

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

Anda dapat dengan mudah melampirkan Disk Terkelola yang disediakan sebelumnya:

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

Kumpulan Skala Mesin Virtual dengan Disk Terkelola

Sebelum Azure Managed Disks, Anda harus membuat akun penyimpanan secara manual untuk setiap VM dalam Virtual Machine Scale Set Anda dan menggunakan parameter vhd_containers untuk menentukan akun-akun penyimpanan tersebut di REST API Scale Set.

Dengan Azure Managed Disks, manajemen akun penyimpanan tidak lagi diperlukan. Akibatnya, storage_profile untuk Virtual Machine Scale Sets sekarang dapat disesuaikan dengan yang digunakan untuk pembuatan VM individual.

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

Sampel lengkapnya adalah sebagai berikut:

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

Operasi lain dengan Disk Terkelola

Mengubah ukuran Disk Terkelola

Contoh ini menunjukkan cara membuat Disk Terkelola yang ada lebih besar. Ini berguna ketika Anda membutuhkan lebih banyak ruang untuk data atau aplikasi Anda.

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

Memperbarui tipe akun penyimpanan dari Disk Terkelola

Contoh ini menunjukkan cara mengubah jenis penyimpanan Disk Terkelola dan membuatnya lebih besar. Ini berguna ketika Anda membutuhkan lebih banyak ruang atau performa yang lebih baik untuk data atau aplikasi Anda.

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

Buat gambar dari penyimpanan blob

Contoh ini menunjukkan cara membuat gambar Disk Terkelola dari file VHD yang disimpan di Azure Blob Storage. Ini berguna ketika Anda ingin membuat gambar yang dapat digunakan kembali yang dapat Anda gunakan untuk membuat komputer virtual baru.

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

Membuat rekam jepret Disk Terkelola yang saat ini terpasang ke komputer virtual

Contoh ini menunjukkan cara mengambil rekam jepret Disk Terkelola yang dilampirkan ke komputer virtual. Anda dapat menggunakan rekam jepret untuk mencadangkan disk atau memulihkannya nanti jika diperlukan.

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

Lihat juga