Aracılığıyla paylaş


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

Azure Yönetilen Diskler, Azure Sanal Makineler ve Azure VMware Çözümü ile kullanılmak üzere tasarlanmış yüksek performanslı, dayanıklı blok depolama alanıdır. Azure Yönetilen Diskler doğrudan depolama hesaplarıyla çalışmak zorunda kalmadan basitleştirilmiş disk yönetimi, gelişmiş ölçeklenebilirlik, gelişmiş güvenlik ve daha iyi ölçeklendirme sağlar. Daha fazla bilgi için bkz. Azure Yönetilen Diskler.

Kitaplığı, azure-mgmt-compute mevcut bir sanal makine için Yönetilen Diskler yönetmek için kullanırsınız.

Kitaplığıyla azure-mgmt-compute sanal makine oluşturma örneği için bkz . Örnek - Sanal makine oluşturma.

Bu makaledeki kod örneklerinde, kitaplığı kullanarak yönetilen disklerle bazı yaygın görevlerin nasıl gerçekleştirilecekleri gösterilmektedir azure-mgmt-compute . Bunlar olduğu gibi çalıştırılamaz, ancak kendi kodunuzla birleştirebilmek için tasarlanmıştır. Örnekleri çalıştırmak için kodunuzda örneğinin azure.mgmt.compute ComputeManagementClient nasıl oluşturulacağını öğrenmek için Örnek - Sanal makine oluşturma'ya başvurabilirsiniz.

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 bölümlerde gösterildiği gibi tek başına Yönetilen Diskler birçok şekilde oluşturabilirsiniz.

Boş bir Yönetilen Disk oluşturma

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şturma

Yönetilen disk, blob olarak depolanan bir sanal sabit diskten (VHD) oluşturulur.

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 depolamadan Yönetilen Disk görüntüsü oluşturma

Yönetilen disk görüntüsü blob olarak depolanan bir sanal sabit diskten (VHD) oluşturulur.

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 Yönetilen Disk oluşturma

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 Diskler ile sanal makine

Belirli bir disk görüntüsü için örtük yönetilen diske sahip bir Sanal Makine oluşturabilirsiniz ve bu da tüm ayrıntıları belirtmenizi engeller.

Azure'daki bir işletim sistemi görüntüsünden VM oluşturulurken örtük olarak bir Yönetilen Disk oluşturulur. parametresinde storage_profile isteğe os_disk bağlıdır ve Sanal Makine oluşturmak için gerekli önkoşul olarak bir depolama hesabı 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şturma hakkında tam bir örnek için bkz . Örnek - Sanal makine oluşturma. Oluşturma örneğinde parametresini storage_profile kullanırsınız.

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 Diskler ile Sanal Makine Ölçek Kümeleri

Yönetilen Diskler önce, Ölçek Kümenizin içinde olmasını istediğiniz tüm VM'ler için el ile bir depolama hesabı oluşturmanız ve ardından Ölçek Kümesi RestAPI'sine tüm depolama hesabı adını sağlamak için liste parametresini vhd_containers kullanmanız gerekiyordu.

Azure Yönetilen Diskler ile depolama hesaplarını yönetmeniz gerekmediğinden, storage_profileSanal Makine Ölçek Kümeleri için hesabınız artık VM oluşturmada kullanılanla tam olarak aynı olabilir:

'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 Diskler ile diğer işlemler

Yönetilen Diski Yeniden Boyutlandırma

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 Diskler depolama hesabı türünü güncelleştirme

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 depolamadan görüntü oluşturma

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

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 bkz.