Utiliser la gestion des services de Python

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état EOL (End Of Life). Faites le point sur votre utilisation afin de vous organiser en conséquence. Pour plus d’informations, consultez les Conseils sur la fin de vie CentOS.

Important

Services Cloud (classique) est désormais déconseillé pour les nouveaux clients et sera supprimé le 31 août 2024 pour tous les clients. Les nouveaux déploiements doivent utiliser le nouveau modèle de déploiement basé sur Azure Resource Manager Azure Cloud Services (support étendu) .

Ce guide vous explique comment effectuer des tâches courantes de gestion des services par programme à partir de Python. La classe ServiceManagementService du Kit de développement logiciel (SDK) Azure pour Python prend en charge l’accès par programmation à une grande partie des fonctionnalités liées au management des services disponibles dans le portail Azure. Vous pouvez utiliser cette fonctionnalité pour créer, mettre à jour et supprimer des services cloud, des déploiements, des services de gestion de données et des machines virtuelles. Ces fonctionnalités peuvent être utiles pour la création d'applications nécessitant un accès par programme à la gestion des services.

Qu’est-ce que la gestion des services ?

L’API Gestion des services Azure fournit un accès par programmation aux fonctionnalités de management des services disponibles par le biais du portail Azure. Vous pouvez utiliser le Kit de développement logiciel (SDK) Azure pour Python pour gérer vos services cloud et comptes de stockage.

Pour utiliser l'API de gestion des services, vous devez créer un compte Azure.

Concepts

Le Kit de développement logiciel (SDK) Azure pour Python inclut l’API Gestion des services, qui est une API REST. Toutes les opérations de l’API sont effectuées au moyen du protocole TLS et sont mutuellement authentifiées au moyen de certificats X.509 v3. Le service de gestion est accessible à partir d’un service s’exécutant dans Azure. Il est également accessible directement via Internet à partir de toute application capable d’envoyer une demande HTTPS et de recevoir une réponse HTTPS.

Installation

Toutes les fonctionnalités décrites dans cet article sont disponibles dans le package azure-servicemanagement-legacy que vous pouvez installer à l’aide de pip. Pour plus d’informations sur l’installation (par exemple si vous ne connaissez pas Python), voir Installation de Python et du SDK Azure.

Se connecter à la gestion du service

Pour vous connecter au point de terminaison de gestion du service, vous avez besoin de votre ID d’abonnement Azure et d’un certificat de gestion valide. Vous pouvez obtenir votre ID d’abonnement dans le portail Azure.

Notes

Vous pouvez désormais utiliser des certificats créés avec OpenSSL lors de l’exécution sous Windows. Vous avez besoin de Python 2.7.4 ou version ultérieure. Nous vous recommandons d’utiliser OpenSSL au lieu de .pfx parce que la prise en charge des certificats .pfx sera probablement supprimée à l’avenir.

Certificats de gestion sur Windows/Mac/Linux (OpenSSL)

Vous pouvez utiliser OpenSSL pour créer votre certificat de gestion. Vous devez créer deux certificats, l’un pour le serveur (un fichier .cer) et l’autre pour le client (fichier .pem). Pour créer le fichier .pem , exécutez :

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

Pour créer le certificat .cer , exécutez :

openssl x509 -inform pem -in mycert.pem -outform der -out mycert.cer

Pour plus d’informations sur les certificats Azure, voir Vue d’ensemble des certificats pour Azure Cloud Services. Pour une description complète des paramètres OpenSSL, consultez la documentation disponible sur https://www.openssl.org/docs/manmaster/man1/req.html.

Après avoir créé ces fichiers, téléchargez le fichier .cer sur Azure. Dans le portail Azure, sous l’onglet Paramètres, sélectionnez Charger. Remarquez que vous avez enregistré le fichier .pem.

Après avoir obtenu votre ID d’abonnement, créez un certificat, chargez le fichier .cer sur Azure, puis connectez-vous au point de terminaison de gestion Azure. Connectez-vous en passant l’ID d’abonnement et le chemin d’accès au fichier .pem à ServiceManagementService.

from azure import *
from azure.servicemanagement import *

subscription_id = '<your_subscription_id>'
certificate_path = '<path_to_.pem_certificate>'

sms = ServiceManagementService(subscription_id, certificate_path)

Dans l’exemple ci-dessus, sms est un objet ServiceManagementService . La classe ServiceManagementService est la classe principale utilisée pour gérer les services Azure.

Certificats de gestion sur Windows (MakeCert)

Vous pouvez créer un certificat de gestion auto-signé sur votre machine en utilisant makecert.exe. Ouvrez une invite de commande Visual Studio en tant qu’administrateur, puis utilisez la commande suivante, en remplaçant AzureCertificate par le nom du certificat que vous voulez utiliser :

makecert -sky exchange -r -n "CN=AzureCertificate" -pe -a sha1 -len 2048 -ss My "AzureCertificate.cer"

La commande crée le fichier .cer et l’installe dans le magasin de certificats Personnel. Pour plus d’informations, voir Vue d’ensemble des certificats pour Azure Cloud Services.

Une fois le certificat créé, chargez le fichier .cer sur Azure. Dans le portail Azure, sous l’onglet Paramètres, sélectionnez Charger.

Après avoir obtenu votre ID d’abonnement, créez un certificat, chargez le fichier .cer sur Azure, puis connectez-vous au point de terminaison de gestion Azure. Connectez-vous en passant l’ID d’abonnement et l’emplacement du certificat dans votre magasin de certificats Personnel à ServiceManagementService (là encore, remplacez AzureCertificate par le nom de votre certificat).

from azure import *
from azure.servicemanagement import *

subscription_id = '<your_subscription_id>'
certificate_path = 'CURRENT_USER\\my\\AzureCertificate'

sms = ServiceManagementService(subscription_id, certificate_path)

Dans l’exemple ci-dessus, sms est un objet ServiceManagementService . La classe ServiceManagementService est la classe principale utilisée pour gérer les services Azure.

Répertorier les emplacements disponibles

Pour répertorier les emplacements disponibles pour les services d’hébergement, utilisez la méthode list_locations.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

result = sms.list_locations()
for location in result:
    print(location.name)

Quand vous créez un service cloud ou un service de stockage, vous devez fournir un emplacement valide. La méthode list_locations renvoie toujours une liste à jour des emplacements disponibles actuellement. Lors de la rédaction de cet article, les emplacements disponibles étaient les suivants :

  • Europe Ouest
  • Europe Nord
  • Asie Sud-Est
  • Asie Est
  • USA Centre
  • Centre-Nord des États-Unis
  • États-Unis - partie centrale méridionale
  • USA Ouest
  • USA Est
  • Japon Est
  • OuJapon Est
  • Brésil Sud
  • Australie Est
  • Australie Sud-Est

Créer un service cloud

Quand vous créez une application et l’exécutez dans Azure, l’ensemble formé par le code et la configuration dans Azure est appelé service cloud. (Il est également appelé service hébergé dans les versions antérieures d’Azure.) Vous pouvez utiliser la méthode create_hosted_service pour créer un service hébergé. Créez le service en fournissant un nom de service hébergé (qui doit être unique dans Azure), une étiquette (automatiquement codée en base64), une description et un emplacement.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

name = 'myhostedservice'
label = 'myhostedservice'
desc = 'my hosted service'
location = 'West US'

sms.create_hosted_service(name, label, desc, location)

Vous pouvez répertorier tous les services hébergés pour votre abonnement en utilisant la méthode list_hosted_services.

result = sms.list_hosted_services()

for hosted_service in result:
    print('Service name: ' + hosted_service.service_name)
    print('Management URL: ' + hosted_service.url)
    print('Location: ' + hosted_service.hosted_service_properties.location)
    print('')

Si vous souhaitez obtenir des informations sur un service hébergé particulier, passez son nom à la méthode get_hosted_service_properties.

hosted_service = sms.get_hosted_service_properties('myhostedservice')

print('Service name: ' + hosted_service.service_name)
print('Management URL: ' + hosted_service.url)
print('Location: ' + hosted_service.hosted_service_properties.location)

Une fois un service cloud créé, déployez votre code dessus avec la méthode create_deployment.

Supprimer un service cloud

Vous pouvez supprimer un service cloud en passant son nom à la méthode delete_hosted_service.

sms.delete_hosted_service('myhostedservice')

Avant de supprimer un service, vous devez supprimer tous les déploiements associés. Pour plus d’informations, voir Supprimer un déploiement.

Supprimer un déploiement

Pour supprimer un déploiement, utilisez la méthode delete_deployment. L’exemple suivant montre comment supprimer un déploiement nommé v1:

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

sms.delete_deployment('myhostedservice', 'v1')

Créer un service de stockage

Un service de stockage donne accès aux objets blob, tables et files d’attente Azure. Pour créer un service de stockage, vous avez besoin d’un nom pour le service (comptant entre 3 et 24 caractères minuscules, et unique dans Azure). Vous avez également besoin d’une description, d’une étiquette (comptant jusqu’à 100 caractères, automatiquement codée en base64) et d’un emplacement. L’exemple suivant indique comment créer un service de stockage en spécifiant un emplacement :

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

name = 'mystorageaccount'
label = 'mystorageaccount'
location = 'West US'
desc = 'My storage account description.'

result = sms.create_storage_account(name, desc, label, location=location)

operation_result = sms.get_operation_status(result.request_id)
print('Operation status: ' + operation_result.status)

Dans l’exemple ci-dessus, l’état de l’opération create_storage_account peut être extrait en passant le résultat renvoyé par create_storage_account à la méthode get_operation_status.

Vous pouvez afficher la liste de vos comptes de stockage et leurs propriétés avec la méthode list_storage_accounts.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

result = sms.list_storage_accounts()
for account in result:
    print('Service name: ' + account.service_name)
    print('Location: ' + account.storage_service_properties.location)
    print('')

Supprimer un service de stockage

Pour supprimer un service de stockage, passez son nom à la méthode delete_storage_account. La suppression d’un service de stockage supprime toutes les données qui y sont stockées (objets blob, tables et files d’attente).

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

sms.delete_storage_account('mystorageaccount')

Répertorier les systèmes d’exploitation disponibles

Pour répertorier les systèmes d’exploitation disponibles pour les services d’hébergement, utilisez la méthode list_operating_systems.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

result = sms.list_operating_systems()

for os in result:
    print('OS: ' + os.label)
    print('Family: ' + os.family_label)
    print('Active: ' + str(os.is_active))

Vous pouvez également utiliser la méthode list_operating_system_families, qui regroupe les systèmes d’exploitation par famille.

result = sms.list_operating_system_families()

for family in result:
    print('Family: ' + family.label)
    for os in family.operating_systems:
        if os.is_active:
            print('OS: ' + os.label)
            print('Version: ' + os.version)
    print('')

Créer une image de système d’exploitation

Pour ajouter une image de système d’exploitation au référentiel d’images, utilisez la méthode add_os_image.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

name = 'mycentos'
label = 'mycentos'
os = 'Linux' # Linux or Windows
media_link = 'url_to_storage_blob_for_source_image_vhd'

result = sms.add_os_image(label, media_link, name, os)

operation_result = sms.get_operation_status(result.request_id)
print('Operation status: ' + operation_result.status)

Pour afficher la liste des images de systèmes d’exploitation qui sont disponibles, utilisez la méthode list_os_images. Cela inclut toutes l’ensemble des images de plateforme et d’utilisateur.

result = sms.list_os_images()

for image in result:
    print('Name: ' + image.name)
    print('Label: ' + image.label)
    print('OS: ' + image.os)
    print('Category: ' + image.category)
    print('Description: ' + image.description)
    print('Location: ' + image.location)
    print('Media link: ' + image.media_link)
    print('')

Supprimer une image de système d’exploitation

Pour supprimer une image d’utilisateur, utilisez la méthode delete_os_image.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

result = sms.delete_os_image('mycentos')

operation_result = sms.get_operation_status(result.request_id)
print('Operation status: ' + operation_result.status)

Créer une machine virtuelle

Pour créer une machine virtuelle, vous devez d'abord créer un service cloud. Ensuite, créez le déploiement de machine virtuelle en utilisant la méthode create_virtual_machine_deployment.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

name = 'myvm'
location = 'West US'

#Set the location
sms.create_hosted_service(service_name=name,
    label=name,
    location=location)

# Name of an os image as returned by list_os_images
image_name = 'OpenLogic__OpenLogic-CentOS-62-20120531-en-us-30GB.vhd'

# Destination storage account container/blob where the VM disk
# will be created
media_link = 'url_to_target_storage_blob_for_vm_hd'

# Linux VM configuration, you can use WindowsConfigurationSet
# for a Windows VM instead
linux_config = LinuxConfigurationSet('myhostname', 'myuser', 'mypassword', True)

os_hd = OSVirtualHardDisk(image_name, media_link)

sms.create_virtual_machine_deployment(service_name=name,
    deployment_name=name,
    deployment_slot='production',
    label=name,
    role_name=name,
    system_config=linux_config,
    os_virtual_hard_disk=os_hd,
    role_size='Small')

Supprimer une machine virtuelle

Pour supprimer une machine virtuelle, vous devez commencer par supprimer le déploiement en utilisant la méthode delete_deployment.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

sms.delete_deployment(service_name='myvm',
    deployment_name='myvm')

Vous pouvez ensuite supprimer le service cloud en utilisant la méthode delete_hosted_service.

sms.delete_hosted_service(service_name='myvm')

Créer une machine virtuelle à partir d’une image de machine virtuelle capturée

Pour capturer une image de machine virtuelle, commencez par appeler la méthode capture_vm_image.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

# replace the below three parameters with actual values
hosted_service_name = 'hs1'
deployment_name = 'dep1'
vm_name = 'vm1'

image_name = vm_name + 'image'
image = CaptureRoleAsVMImage    ('Specialized',
    image_name,
    image_name + 'label',
    image_name + 'description',
    'english',
    'mygroup')

result = sms.capture_vm_image(
        hosted_service_name,
        deployment_name,
        vm_name,
        image
    )

Pour vous assurer que vous avez bien capturé l’image, utilisez l’API list_vm_images. Assurez-vous que votre image s’affiche dans les résultats.

images = sms.list_vm_images()

Enfin, pour créer la machine virtuelle à l’aide de l’image capturée, utilisez la méthode create_virtual_machine_deployment comme avant mais, cette fois, en passant vm_image_name.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

name = 'myvm'
location = 'West US'

#Set the location
sms.create_hosted_service(service_name=name,
    label=name,
    location=location)

sms.create_virtual_machine_deployment(service_name=name,
    deployment_name=name,
    deployment_slot='production',
    label=name,
    role_name=name,
    system_config=linux_config,
    os_virtual_hard_disk=None,
    role_size='Small',
    vm_image_name = image_name)

Pour en savoir plus sur la capture d’une machine virtuelle Linux dans le modèle de déploiement classique, voir Capturer une machine virtuelle Linux.

Pour en savoir plus sur la capture d’une machine virtuelle Windows dans le modèle de déploiement classique, voir Capturer une machine virtuelle Windows.

Étapes suivantes

Vous connaissez désormais les principes de base de la gestion des services. Vous pouvez maintenant accéder à la documentation complète de référence sur l’API du Kit de développement logiciel (SDK) Azure pour Python et effectuer facilement des tâches complexes pour gérer votre application Python.

Pour plus d’informations, consultez le Centre pour développeurs Python.