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