Aracılığıyla paylaş


Python için Azure kitaplıkları (SDK) ile Azure Yönetilen Diskleri kullanma

Azure Yönetilen Diskler, Azure Sanal Makineler ve Azure VMware Çözümü ile kullanılmak üzere tasarlanmış yüksek performanslı, dayanıklı blok depolamadır. Disk yönetimini basitleştirir, daha fazla ölçeklenebilirlik sunar, güvenliği artırır ve depolama hesaplarını doğrudan yönetme gereksinimini ortadan kaldırır. Daha fazla bilgi için bkz. Azure Yönetilen Diskler.

Mevcut bir VM ile ilişkili Yönetilen Diskler üzerindeki işlemler için kitaplığını azure-mgmt-compute kullanın.

Bu makaledeki kod örneklerinde kitaplığı kullanan Yönetilen Disklerle ilgili yaygın işlemler gösterilmektedir azure-mgmt-compute . Bu örneklerin tek başına betikler olarak çalıştırılması değil, kendi kodunuzla tümleştirilmesi amaçlanıyor. ComputeManagementClient bir örneği azure.mgmt.compute betiğinizde nasıl oluşturacağınızı öğrenmek için, bkz. Örnek - Sanal makine oluşturma.

Kitaplığın nasıl kullanılacağına azure-mgmt-compute ilişkin daha eksiksiz örnekler için bkz. GitHub'da işlem için Python için Azure SDK örnekleri .

Tek Başına Yönetilen Diskler

Aşağıdaki örneklerde tek başına Yönetilen Diskler sağlamanın farklı yolları gösterilmektedir.

Boş bir Yönetilen Disk oluşturma

Bu örnekte yeni bir boş Yönetilen Disk oluşturma gösterilmektedir. Bunu bir sanal makineye eklemek için boş bir disk olarak veya anlık görüntüler veya görüntüler oluşturmak için başlangıç noktası olarak kullanabilirsiniz.

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

Blob depolamadan Yönetilen Disk oluşturun

Bu örnekte, Azure Blob Depolama'da depolanan bir VHD dosyasından Yönetilen Disk oluşturma gösterilmektedir. Mevcut bir sanal sabit diski yeniden kullanmak veya Azure'a taşımak istediğinizde bu yararlı olur.

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

Blob depolama alanından Yönetilen Disk imajı oluşturun

Bu örnekte, Azure Blob Depolama'da depolanan bir VHD dosyasından Yönetilen Disk görüntüsünün nasıl oluşturulacağı gösterilmektedir. Bu, yeni sanal makineler oluşturmak için kullanılabilecek yeniden kullanılabilir bir görüntü oluşturmak istediğinizde kullanışlıdır.

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

Kendi görüntünüzden bir Yönetilen Disk oluşturun

Bu örnekte, var olan bir diski kopyalayarak yeni bir Yönetilen Disk oluşturma gösterilmektedir. Bu, yedekleme yapmak veya başka bir sanal makinede aynı disk kurulumunu kullanmak istediğinizde yararlıdır.

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

Yönetilen Diskleri olan sanal makine

Belirli bir disk görüntüsünü temel alarak örtük olarak oluşturulmuş bir Yönetilen Disk ile bir sanal makine oluşturabilir ve tüm disk ayrıntılarını el ile tanımlama gereksinimini ortadan kaldırabilirsiniz.

Azure'daki bir işletim sistemi görüntüsünden VM oluşturulurken örtük olarak bir Yönetilen Disk oluşturulur. Azure, depolama hesabını otomatik olarak işler, bu nedenle depolama hesabını el ile belirtmeniz storage_profile.os_disk veya oluşturmanız gerekmez.

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

Python için Azure yönetim kitaplıklarını kullanarak sanal makine oluşturmayı gösteren eksiksiz bir örnek için bkz. Örnek - Sanal makine oluşturma. Bu örnekte parametresinin nasıl kullanılacağı gösterilmektedir storage_profile .

Kendi görüntünüzden de oluşturabilirsiniz storage_profile :

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

Önceden sağlanan bir Yönetilen Diski kolayca ekleyebilirsiniz:

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

Yönetilen Disklerle Sanal Makine Ölçek Kümeleri

Azure Yönetilen Disklerinden önce, Sanal Makine Ölçek Kümenizdeki her VM için el ile bir depolama hesabı oluşturmanız ve bu depolama hesaplarını Ölçek Kümesi REST API'sinde belirtmek için parametresini kullanmanız vhd_containers gerekiyordu.

Azure Yönetilen Diskler ile depolama hesabı yönetimi artık gerekli değildir. Sonuç olarak, storage_profileSanal Makine Ölçek Kümeleri'nin kullanımı, artık tek tek VM oluşturma için kullanılanla eşleşebilir:

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

Tam örnek aşağıdaki gibidir:

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

Yönetilen Disklerle diğer işlemler

Yönetilen Disk Sürücüsünü Yeniden Boyutlandırma

Bu örnekte, mevcut yönetilen diskin nasıl büyütülecekleri gösterilmektedir. Bu, verileriniz veya uygulamalarınız için daha fazla alana ihtiyacınız olduğunda kullanışlıdır.

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

Yönetilen Disklerin depolama hesabı türünü güncelleştirme

Bu örnekte, Yönetilen Diskin depolama türünü değiştirme ve daha büyük hale getirme gösterilmektedir. Bu, verileriniz veya uygulamalarınız için daha fazla alana veya daha iyi performansa ihtiyacınız olduğunda yararlıdır.

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

Blob deposundan görüntü oluşturma

Bu örnekte, Azure Blob Depolama'da depolanan bir VHD dosyasından Yönetilen Disk görüntüsünün nasıl oluşturulacağı gösterilmektedir. Bu, yeni sanal makineler oluşturmak için kullanabileceğiniz yeniden kullanılabilir bir görüntü oluşturmak istediğinizde kullanışlıdır.

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

Şu anda bir sanal makineye bağlı yönetilen diskin anlık görüntüsünü oluşturma

Bu örnekte, sanal makineye bağlı bir Yönetilen Diskin anlık görüntüsünün nasıl alındığını gösterir. Anlık görüntüyü kullanarak diski yedekleyebilir veya gerekirse daha sonra geri yükleyebilirsiniz.

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

Ayrıca bakınız