Usare la gestione dei servizi da PythonUse service management from Python

La guida descrive come eseguire attività comuni di gestione dei servizi a livello di codice da Python.This guide shows you how to programmatically perform common service management tasks from Python. La classe ServiceManagementService disponibile in Azure SDK per Python supporta l'accesso a livello di codice alla maggior parte delle funzionalità di gestione dei servizi disponibili tramite il portale di Azure.The ServiceManagementService class in the Azure SDK for Python supports programmatic access to much of the service management-related functionality that is available in the Azure portal. È possibile usare questa funzionalità per creare, aggiornare ed eliminare servizi cloud, distribuzioni, servizi di gestione dati e macchine virtuali.You can use this functionality to create, update, and delete cloud services, deployments, data management services, and virtual machines. Questa funzionalità può rivelarsi utile nella creazione di applicazioni che richiedono accesso a livello di codice alla gestione dei servizi.This functionality can be useful in building applications that need programmatic access to service management.

Informazioni sulla gestione dei servizi What is service management?

L'API Gestione dei servizi di Azure fornisce l'accesso a livello di codice alla maggior parte delle funzionalità di gestione dei servizi disponibili tramite il portale di Azure.The Azure Service Management API provides programmatic access to much of the service management functionality available through the Azure portal. È possibile usare Azure SDK per Python per gestire i servizi cloud e gli account di archiviazione.You can use the Azure SDK for Python to manage your cloud services and storage accounts.

Per usare l'API Gestione dei servizi, è necessario creare un account Azure.To use the Service Management API, you need to create an Azure account.

Concetti Concepts

Azure SDK per Python include l'API Gestione dei servizi, ovvero un'API REST.The Azure SDK for Python wraps the Service Management API, which is a REST API. Tutte le operazioni dell'API vengono eseguite tramite SSL e autenticate reciprocamente con certificati X.509 v3.All API operations are performed over SSL and mutually authenticated by using X.509 v3 certificates. Il servizio di gestione è accessibile da un servizio in esecuzione in Azure.The management service can be accessed from within a service running in Azure. È anche possibile accedervi direttamente tramite Internet da qualsiasi applicazione in grado di inviare una richiesta HTTPS e ricevere una risposta HTTPS.It also can be accessed directly over the Internet from any application that can send an HTTPS request and receive an HTTPS response.

Installazione Installation

Tutte le funzionalità descritte in questo articolo sono disponibili nel pacchetto azure-servicemanagement-legacy che è possibile installare tramite pip.All the features described in this article are available in the azure-servicemanagement-legacy package, which you can install by using pip. Per altre informazioni sull'installazione, ad esempio se non si ha familiarità con Python, vedere Installazione di Python e dell'SDK.For more information about installation (for example, if you're new to Python), see Install Python and the Azure SDK.

Connettersi alla gestione dei servizi Connect to service management

Per connettersi all'endpoint di gestione dei servizi, sono necessari un ID sottoscrizione di Azure e un certificato di gestione valido.To connect to the service management endpoint, you need your Azure subscription ID and a valid management certificate. È possibile ottenere l'ID sottoscrizione tramite il portale di Azure.You can obtain your subscription ID through the Azure portal.

Nota

È ora possibile usare i certificati creati con OpenSSL per l'esecuzione in Windows.You now can use certificates created with OpenSSL when running on Windows. È necessario Python 2.7.4 o versioni successive.Python 2.7.4 or later is required. È consigliabile usare i certificati OpenSSL anziché pfx, perché il supporto per i certificati pfx verrà probabilmente rimosso in futuro.We recommend that you use OpenSSL instead of .pfx, because support for .pfx certificates is likely to be removed in the future.

Certificati di gestione in Windows/Mac/Linux (OpenSSL)Management certificates on Windows/Mac/Linux (OpenSSL)

Per creare il certificato di gestione, è possibile utilizzare OpenSSL .You can use OpenSSL to create your management certificate. È necessario creare due certificati, uno per il server (un file .cer) e uno per il client (un file .pem).You need to create two certificates, one for the server (a .cer file) and one for the client (a .pem file). Per creare il file .pem , eseguire:To create the .pem file, execute:

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

Per creare il certificato .cer , eseguire:To create the .cer certificate, execute:

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

Per altre informazioni sui certificati di Azure, vedere Certificates overview for Azure Cloud Services (Panoramica sui certificati per Servizi cloud di Azure).For more information about Azure certificates, see Certificates overview for Azure Cloud Services. Per una descrizione completa dei parametri OpenSSL, vedere la documentazione disponibile all'indirizzo http://www.openssl.org/docs/apps/openssl.html.For a complete description of OpenSSL parameters, see the documentation at http://www.openssl.org/docs/apps/openssl.html.

Dopo avere creato questi file, caricare il file .cer in Azure.After you create these files, upload the .cer file to Azure. Nel portale di Azure nella scheda impostazioni selezionare Carica.In the Azure portal, on the Settings tab, select Upload. Prendere nota del percorso in cui è stato salvato il file .pem.Note where you saved the .pem file.

Dopo avere ottenuto l'ID sottoscrizione, avere creato un certificato e avere caricato il file .cer in Azure, connettersi all'endpoint di gestione di Azure.After you obtain your subscription ID, create a certificate, and upload the .cer file to Azure, connect to the Azure management endpoint. Eseguire la connessione passando l'ID sottoscrizione e il percorso del file .pem a ServiceManagementService.Connect by passing the subscription ID and the path to the .pem file to 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)

Nell'esempio precedente sms è un oggetto ServiceManagementService .In the preceding example, sms is a ServiceManagementService object. La classe ServiceManagementService è la classe principale usata per gestire i servizi di Azure.The ServiceManagementService class is the primary class used to manage Azure services.

Certificati di gestione in Windows (MakeCert)Management certificates on Windows (MakeCert)

È possibile creare un certificato di gestione autofirmato nel computer usando makecert.exe.You can create a self-signed management certificate on your machine by using makecert.exe. Aprire un prompt dei comandi di Visual Studio come amministratore e usare il comando seguente, sostituendo AzureCertificate con il nome del certificato da usare:Open a Visual Studio command prompt as an administrator and use the following command, replacing AzureCertificate with the certificate name you want to use:

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

Il comando consente di creare il file .cer e di installarlo nell'archivio certificati Personale.The command creates the .cer file and installs it in the Personal certificate store. Per altre informazioni, vedere Certificates overview for Azure Cloud Services (Panoramica sui certificati per Servizi cloud di Azure).For more information, see Certificates overview for Azure Cloud Services.

Dopo avere creato il certificato, caricare il file .cer in Azure.After you create the certificate, upload the .cer file to Azure. Nel portale di Azure nella scheda impostazioni selezionare Carica.In the Azure portal, on the Settings tab, select Upload.

Dopo avere ottenuto l'ID sottoscrizione, avere creato un certificato e avere caricato il file .cer in Azure, connettersi all'endpoint di gestione di Azure.After you obtain your subscription ID, create a certificate, and upload the .cer file to Azure, connect to the Azure management endpoint. Eseguire la connessione passando l'ID sottoscrizione e il percorso del certificato nell'archivio certificati Personale a ServiceManagementService (anche in questo caso sostituire AzureCertificate con il nome del certificato).Connect by passing the subscription ID and the location of the certificate in your Personal certificate store to ServiceManagementService (again, replace AzureCertificate with the name of your certificate).

from azure import *
from azure.servicemanagement import *

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

sms = ServiceManagementService(subscription_id, certificate_path)

Nell'esempio precedente sms è un oggetto ServiceManagementService .In the preceding example, sms is a ServiceManagementService object. La classe ServiceManagementService è la classe principale usata per gestire i servizi di Azure.The ServiceManagementService class is the primary class used to manage Azure services.

Creare un elenco delle località disponibili List available locations

Per elencare le località disponibili per i servizi di hosting, usare il metodo list_locations.To list the locations that are available for hosting services, use the list_locations method.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Quando si crea un servizio cloud o un servizio di archiviazione, è necessario fornire una località valida.When you create a cloud service or storage service, you need to provide a valid location. Il metodo list_locations restituisce sempre un elenco aggiornato delle località attualmente disponibili.The list_locations method always returns an up-to-date list of the currently available locations. Al momento della stesura di questo articolo, le località disponibili sono le seguenti:As of this writing, the available locations are:

  • Europa occidentaleWest Europe
  • Europa settentrionaleNorth Europe
  • Asia sudorientaleSoutheast Asia
  • Asia orientaleEast Asia
  • Stati Uniti centraliCentral US
  • Stati Uniti centro-settentrionaliNorth Central US
  • Stati Uniti centro-meridionaliSouth Central US
  • Stati Uniti occidentaliWest US
  • Stati Uniti orientaliEast US
  • Giappone orientaleJapan East
  • Giappone occidentaleJapan West
  • Brasile meridionaleBrazil South
  • Australia orientaleAustralia East
  • Australia sudorientaleAustralia Southeast

Creare un servizio cloud Create a cloud service

Quando si crea un'applicazione e la si esegue in Azure, la combinazione del codice e della configurazione costituisce il cosiddetto servizio cloud di AzureWhen you create an application and run it in Azure, the code and configuration together are called an Azure cloud service. (noto come servizio ospitato nelle versioni precedenti di Azure). È possibile usare il metodo create_hosted_service per creare un nuovo servizio ospitato.(It was known as a hosted service in earlier Azure releases.) You can use the create_hosted_service method to create a new hosted service. Creare il servizio specificando un nome di servizio ospitato univoco in Azure, un'etichetta con codifica base64 automatica, una descrizione e una località.Create the service by providing a hosted service name (which must be unique in Azure), a label (automatically encoded to base64), a description, and a location.

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)

Per elencare tutti i servizi ospitati per la sottoscrizione, è possibile usare il metodo list_hosted_services.You can list all the hosted services for your subscription with the list_hosted_services method.

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

Per ottenere informazioni su un particolare servizio ospitato, passare il nome del servizio ospitato al metodo get_hosted_service_properties.To get information about a particular hosted service, pass the hosted service name to the get_hosted_service_properties method.

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)

Dopo avere creato un servizio cloud, distribuire il codice al servizio con il metodo create_deployment.After you create a cloud service, deploy your code to the service with the create_deployment method.

Eliminare un servizio cloud Delete a cloud service

È possibile eliminare un servizio cloud passando il nome del servizio al metodo delete_hosted_service.You can delete a cloud service by passing the service name to the delete_hosted_service method.

sms.delete_hosted_service('myhostedservice')

Prima di eliminare un servizio è necessario eliminare tutte le distribuzioni del servizio.Before you can delete a service, all deployments for the service must first be deleted. Per altre informazioni, vedere Eliminare una distribuzione.For more information, see Delete a deployment.

Eliminare una distribuzione Delete a deployment

Per eliminare una distribuzione, usare il metodo delete_deployment.To delete a deployment, use the delete_deployment method. L'esempio seguente mostra come eliminare una distribuzione denominata v1:The following example shows how to delete a deployment named v1:

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Creare un servizio di archiviazione Create a storage service

Un servizio di archiviazione offre l'accesso ai BLOB, alle tabelle e alle code di Azure.A storage service gives you access to Azure blobs, tables, and queues. Per creare un servizio di archiviazione, è necessario un nome per il servizio, compreso tra 3 e 24 caratteri minuscoli e univoco in Azure.To create a storage service, you need a name for the service (between 3 and 24 lowercase characters and unique within Azure). Sono inoltre richieste una descrizione, un'etichetta fino a 100 caratteri con codifica base64 automatica e una località.You also need a description, a label (up to 100 characters, automatically encoded to base64), and a location. Nell'esempio seguente viene illustrato come creare un servizio di archiviazione specificando una località:The following example shows how to create a storage service by specifying a location:

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)

Nell'esempio precedente lo stato dell'operazione create_storage_account può essere recuperato passando il risultato restituito da create_storage_account al metodo get_operation_status.In the preceding example, the status of the create_storage_account operation can be retrieved by passing the result returned by create_storage_account to the get_operation_status method.

È possibile elencare gli account di archiviazione e le relative proprietà con il metodo list_storage_accounts.You can list your storage accounts and their properties with the list_storage_accounts method.

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

Eliminare un servizio di archiviazione Delete a storage service

Per eliminare un servizio di archiviazione, passare il relativo nome al metodo delete_storage_account.To delete a storage service, pass the storage service name to the delete_storage_account method. L'eliminazione di un servizio di archiviazione comporta l'eliminazione di tutti i dati archiviati nel servizio: BLOB, tabelle e code.Deleting a storage service deletes all data stored in the service (blobs, tables, and queues).

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

sms.delete_storage_account('mystorageaccount')

Elencare i sistemi operativi disponibili List available operating systems

Per elencare i sistemi operativi disponibili per i servizi di hosting, usare il metodo list_operating_systems.To list the operating systems that are available for hosting services, use the list_operating_systems method.

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

In alternativa, è possibile usare il metodo list_operating_system_families, che consente di raggruppare i sistemi operativi in base alla famiglia.Alternatively, you can use the list_operating_system_families method, which groups the operating systems by family.

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

Creare un'immagine del sistema operativo Create an operating system image

Per aggiungere un'immagine del sistema operativo all'archivio di immagini, usare il metodo add_os_image.To add an operating system image to the image repository, use the add_os_image method.

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)

Per elencare le immagini del sistema operativo disponibili, usare il metodo list_os_images.To list the operating system images that are available, use the list_os_images method. Sono incluse tutte le immagini di piattaforma e utente.It includes all platform images and user images.

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

Eliminare un'immagine del sistema operativo Delete an operating system image

Per eliminare un'immagine dell'utente, usare il metodo delete_os_image.To delete a user image, use the delete_os_image method.

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)

Creare una macchina virtuale Create a virtual machine

Per creare una macchina virtuale, è necessario creare un servizio cloudTo create a virtual machine, you first need to create a cloud service. prima di creare la distribuzione della macchina virtuale tramite il metodo create_virtual_machine_deployment.Then create the virtual machine deployment by using the create_virtual_machine_deployment method.

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

Eliminare una macchina virtuale Delete a virtual machine

Per eliminare una macchina virtuale, è prima necessario eliminare la distribuzione tramite il metodo delete_deployment.To delete a virtual machine, you first delete the deployment by using the delete_deployment method.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Sarà quindi possibile eliminare il servizio cloud usando il metodo delete_hosted_service.The cloud service can then be deleted by using the delete_hosted_service method.

sms.delete_hosted_service(service_name='myvm')

Creare una macchina virtuale da un'immagine di macchina virtuale acquisitaCreate a virtual machine from a captured virtual machine image

Per acquisire un'immagine di macchina virtuale, è prima necessario chiamare il metodo capture_vm_image.To capture a VM image, you first call the capture_vm_image method.

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
    )

Per verificare di avere acquisito l'immagine correttamente, usare l'API list_vm_imagesTo make sure that you successfully captured the image, use the list_vm_images API. e assicurarsi che l'immagine venga visualizzata nei risultati.Make sure your image is displayed in the results.

images = sms.list_vm_images()

Infine, per creare la macchina virtuale con l'immagine acquisita, usare il metodo create_virtual_machine_deployment come fatto in precedenza, ma questa volta passare vm_image_name.To finally create the virtual machine by using the captured image, use the create_virtual_machine_deployment method as before, but this time pass in the vm_image_name instead.

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)

Per altre informazioni su come acquisire una macchina virtuale Linux nel modello di distribuzione classica, vedere Acquisire una macchina virtuale Linux.To learn more about how to capture a Linux virtual machine in the classic deployment model, see Capture a Linux virtual machine.

Per altre informazioni su come acquisire una macchina virtuale Windows nel modello di distribuzione classica, vedere Acquisire una macchina virtuale Windows.To learn more about how to capture a Windows virtual machine in the classic deployment model, see Capture a Windows virtual machine.

Passaggi successivi Next steps

A questo punto, dopo avere appreso le nozioni di base della gestione dei servizi, è possibile accedere alla documentazione completa di riferimento all'API per Azure Python SDK ed eseguire facilmente le complesse attività di gestione dell'applicazione Python.Now that you've learned the basics of service management, you can access the Complete API reference documentation for the Azure Python SDK and perform complex tasks easily to manage your Python application.

Per ulteriori informazioni, vedere il Centro per sviluppatori di Python.For more information, see the Python Developer Center.