Utiliser Azure Managed Disks avec les bibliothèques Azure (SDK) pour Python
Les disques managés Azure sont un stockage de blocs durable hautes performances conçu pour les machines virtuelles Azure et Azure VMware Solution. Azure Disques managés offre une gestion simplifiée des disques, une scalabilité améliorée, une sécurité améliorée et une meilleure mise à l’échelle sans avoir à travailler directement avec des comptes de stockage. Pour plus d’informations, consultez Azure Disques managés.
Vous utilisez la azure-mgmt-compute
bibliothèque pour administrer Disques managés pour une machine virtuelle existante.
Pour obtenir un exemple de création d’une machine virtuelle avec la azure-mgmt-compute
bibliothèque, consultez l’exemple - Créer une machine virtuelle.
Les exemples de code de cet article montrent comment effectuer des tâches courantes avec des disques managés à l’aide de la azure-mgmt-compute
bibliothèque. Ils ne sont pas exécutables en l’état, mais sont conçus pour vous permettre d’incorporer dans votre propre code. Vous pouvez consulter l’exemple - Créer une machine virtuelle pour apprendre à créer une instance de azure.mgmt.compute ComputeManagementClient
votre code pour exécuter les exemples.
Pour obtenir des exemples plus complets d’utilisation de la azure-mgmt-compute
bibliothèque, consultez les exemples du Kit de développement logiciel (SDK) Azure pour Python pour le calcul dans GitHub.
Disques managés autonomes
Vous pouvez créer des Disques managés autonomes de plusieurs façons, comme illustré dans les sections suivantes.
Créer un disque managé vide
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()
Créer un disque managé à partir du Stockage Blob
Le disque managé est créé à partir d’un disque dur virtuel stocké en tant qu’objet 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()
Créer une image de disque managé à partir du Stockage Blob
L’image de disque managé est créée à partir d’un disque dur virtuel stocké en tant qu’objet 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()
Créer un disque managé à partir de votre propre image
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()
Machines virtuelles avec disques managés
Vous pouvez créer une machine virtuelle avec un disque managé implicite pour une image de disque spécifique, ce qui vous évite de spécifier tous les détails.
Un disque managé est créé implicitement lors de la création d’une machine virtuelle à partir d’une image de système d’exploitation dans Azure. Dans le paramètre storage_profile
, os_disk
est facultatif, et vous n’avez pas besoin de créer un compte de stockage pour créer une machine virtuelle.
storage_profile = azure.mgmt.compute.models.StorageProfile(
image_reference = azure.mgmt.compute.models.ImageReference(
publisher='Canonical',
offer='UbuntuServer',
sku='16.04-LTS',
version='latest'
)
)
Pour obtenir un exemple complet sur la création d’une machine virtuelle à l’aide des bibliothèques de gestion Azure, pour Python, consultez l’exemple - Créer une machine virtuelle. Dans l’exemple de création, vous utilisez le storage_profile
paramètre.
Vous pouvez également créer un storage_profile
à partir de votre propre image :
# 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
)
)
Vous pouvez facilement attacher un disque managé précédemment approvisionné :
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()
Groupes de machines virtuelles identiques avec la fonctionnalité Disques managés
Avant la fonctionnalité Disques managés, il fallait créer un compte de stockage manuellement pour chaque machine virtuelle que vous vouliez placer dans votre groupe identique. Il fallait ensuite utiliser le paramètre de liste vhd_containers
afin de fournir tous les noms de comptes de stockage à l’API REST du groupe identique.
Étant donné que vous n’avez pas besoin de gérer les comptes de stockage avec Azure Disques managés, votre storage_profile
groupe de machines virtuelles identiques peut maintenant être exactement le même que celui utilisé dans la création de machines virtuelles :
'storage_profile': {
'image_reference': {
"publisher": "Canonical",
"offer": "UbuntuServer",
"sku": "16.04-LTS",
"version": "latest"
}
},
Voici l’exemple complet :
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()
Autres opérations avec disques managés
Redimensionnement d’un disque managé
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()
Mettre à jour le type de compte de stockage des disques managés
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()
Créer une image à partir du stockage 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()
Créer une capture instantanée d’un disque managé actuellement attaché à une machine virtuelle
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()
Voir aussi
- Exemple : Créer une machine virtuelle
- Exemple : Créer un groupe de ressources
- Exemple : répertorier les groupes de ressources dans un abonnement
- Exemple : Créer Stockage Azure
- Exemple : Utiliser Stockage Azure
- Exemple : Créer et utiliser une base de données MySQL
- Répondre à une courte enquête sur le SDK Azure pour Python