Come usare la gestione dei servizi da PythonHow to use 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 classico (ad esempio creazione, aggiornamento ed eliminazione dei servizi cloud, distribuzioni, servizi di gestione dati e macchine virtuali).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 classic portal (such as creating, updating, and deleting 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 di gestione dei servizi fornisce l'accesso a livello di codice alla maggior parte delle funzionalità di gestione dei servizi disponibili tramite il portale di Azure classico.The Service Management API provides programmatic access to much of the service management functionality available through the Azure classic portal. Azure SDK per Python consente di gestire i servizi cloud e gli account di archiviazione.The Azure SDK for Python allows you 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 di Gestione servizi di Azure, ovvero un'API REST.The Azure SDK for Python wraps the Azure 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 using X.509 v3 certificates. Il servizio di gestione è accessibile da un servizio in esecuzione in Azure o direttamente tramite Internet da qualsiasi applicazione in grado di inviare una richiesta HTTPS e ricevere una risposta HTTPS.The management service may be accessed from within a service running in Azure, or 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 using pip. Per altre informazioni sull'installazione, ad esempio se non si ha familiarità con Python, vedere l'articolo relativo all'installazione di Python e Azure SDKFor more information about installation (for example, if you are new to Python), see this article: Installing Python and the Azure SDK

Procedura: Connettersi alla gestione dei servizi How to: 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 classico.You can obtain your subscription ID through the Azure classic portal.

Nota

È ora possibile usare i certificati creati con OpenSSL per l'esecuzione in Windows.It is now possible to use certificates created with OpenSSL when running on Windows. È necessario Python 2.7.4 o versioni successive.It requires Python 2.7.4 or later. Per gli utenti è consigliabile usare i certificati OpenSSL anziché pfx, perché il supporto per i certificati pfx verrà probabilmente rimosso in futuro.We recommend users to use OpenSSL instead of .pfx, since support for .pfx certificates will likely 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. È in realtà necessario creare due certificati, uno per il server (un file .cer) e uno per il client (un file .pem).You actually 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 Panoramica sui certificati per i 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 è necessario caricare il file .cer in Azure selezionando l'opzione "Carica" della scheda "Impostazioni" del portale di Azure classico ed è anche necessario prendere nota del percorso di salvataggio del file .pem.After you have created these files, you need to upload the .cer file to Azure via the "Upload" action of the "Settings" tab of the Azure classic portal, and you need to make note of where you saved the .pem file.

Dopo aver ottenuto l'ID sottoscrizione, aver creato un certificato e aver caricato il file .cer in Azure è possibile connettersi all'endpoint di gestione di Azure passando l'ID sottoscrizione e il percorso del file .pem a ServiceManagementService:After you have obtained your subscription ID, created a certificate, and uploaded the .cer file to Azure, you can connect to the Azure management endpoint 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 nel computer un certificato di gestione autofirmato usando makecert.exe.You can create a self-signed management certificate on your machine 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 would like 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 Panoramica sui certificati per i servizi cloud di Azure.For more information, see Certificates Overview for Azure Cloud Services.

Dopo avere creato il certificato è necessario caricare il file .cer in Azure selezionando l'opzione "Carica" della scheda "Impostazioni" del portale di Azure classico.After you have created the certificate, you need to upload the .cer file to Azure via the "Upload" action of the "Settings" tab of the Azure classic portal.

Dopo aver ottenuto l'ID sottoscrizione, aver creato un certificato e aver caricato il file .cer in Azure, è possibile connettersi all'endpoint di gestione di Azure 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 proprio certificato:After you have obtained your subscription ID, created a certificate, and uploaded the .cer file to Azure, you can connect to the Azure management endpoint 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.

Procedura: Creare un elenco delle località disponibili How to: 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

Procedura: Creare un servizio cloud How to: 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 Azure (noto come servizio ospitato in versioni precedenti di Azure).When you create an application and run it in Azure, the code and configuration together are called an Azure cloud service (known as a hosted service in earlier Azure releases). Il metodo create_hosted_service consente di creare un nuovo servizio ospitato specificando un nome di servizio ospitato che deve essere univoco in Azure, un'etichetta con codifica Base64 automatica, una descrizione e una località.The create_hosted_service method allows you to create a new hosted 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 eventuali informazioni su un particolare servizio ospitato, passare il nome del servizio ospitato al metodo get_hosted_service_properties:If you want to get information about a particular hosted service, you can do so by passing 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 aver creato un servizio cloud è possibile distribuire il codice al servizio con il metodo create_deployment.After you have created a cloud service, you can deploy your code to the service with the create_deployment method.

Procedura: Eliminare un servizio cloud How to: 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 informazioni dettagliate, vedere Procedura: Eliminare una distribuzione .(See How to: Delete a deployment for details.)

Procedura: Eliminare una distribuzione How to: 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')

Procedura: Creare un servizio di archiviazione How to: 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 assegnare al servizio un nome di lunghezza compresa tra 3 e 24 caratteri minuscoli e univoco in Azure, nonché una descrizione, un'etichetta fino a 100 caratteri con codifica in Base64 automatica e una località.To create a storage service, you need a name for the service (between 3 and 24 lowercase characters and unique within Azure), 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)

Si noti nell'esempio precedente che è possibile recuperare lo stato dell'operazione create_storage_account passando il risultato restituito da create_storage_account al metodo get_operation_status.Note in the preceding example that 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('')

Procedura: Eliminare un servizio di archiviazione How to: Delete a storage service

È possibile eliminare un servizio di archiviazione passando il relativo nome al metodo delete_storage_account.You can delete a storage service by passing 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')

Procedura: Elencare i sistemi operativi disponibili How to: 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('')

Procedura: Creare un'immagine del sistema operativo How to: 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('')

Procedura: Eliminare un'immagine del sistema operativo How to: 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)

Procedura: Creare una macchina virtuale How to: 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 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')

Procedura: Eliminare una macchina virtuale How to: 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 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 using the delete_hosted_service method:

sms.delete_hosted_service(service_name='myvm')

Procedura: Creare una macchina virtuale da un'immagine di macchina virtuale acquisitaHow To: Create 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 quindi di aver acquisito l'immagine correttamente, usare l'API list_vm_images e accertarsi che l'immagine venga visualizzata nei risultati:Next, to make sure that you have successfully captured the image, use the list_vm_images api, and make sure your image is displayed in the results:

images = sms.list_vm_images()

Per creare infine 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 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, vedere Come acquisire una macchina virtuale Linux.To learn more about how to capture a Linux Virtual Machine, see How to Capture a Linux Virtual Machine.

Per altre informazioni su come acquisire una macchina virtuale Windows, vedere Come acquisire una macchina virtuale Windows.To learn more about how to capture a Windows Virtual Machine, see How to Capture a Windows Virtual Machine.

Passaggi successivi Next Steps

A questo punto, dopo aver 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.