Använda tjänsthantering från Python

Varning

Den här artikeln refererar till CentOS, en Linux-distribution som närmar sig EOL-status (End Of Life). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledningen.

Viktigt!

Cloud Services (klassisk) är nu inaktuellt för nya kunder och kommer att dras tillbaka den 31 augusti 2024 för alla kunder. Nya distributioner bör använda den nya Azure Resource Manager-baserade distributionsmodellen Azure Cloud Services (utökad support).

Den här guiden visar hur du programmatiskt utför vanliga tjänsthanteringsuppgifter från Python. Klassen ServiceManagementService i Azure SDK för Python stöder programmatisk åtkomst till mycket av de tjänsthanteringsrelaterade funktioner som är tillgängliga i Azure-portalen. Du kan använda den här funktionen för att skapa, uppdatera och ta bort molntjänster, distributioner, datahanteringstjänster och virtuella datorer. Den här funktionen kan vara användbar när du skapar program som behöver programmatisk åtkomst till tjänsthantering.

Vad är tjänsthantering?

Azure Service Management-API:et ger programmatisk åtkomst till mycket av de tjänsthanteringsfunktioner som är tillgängliga via Azure-portalen. Du kan använda Azure SDK för Python för att hantera dina molntjänster och lagringskonton.

Om du vill använda Service Management-API:et måste du skapa ett Azure-konto.

Begrepp

Azure SDK för Python omsluter Service Management-API:et, som är ett REST-API. Alla API-åtgärder utförs via TLS och autentiseras ömsesidigt med hjälp av X.509 v3-certifikat. Hanteringstjänsten kan nås från en tjänst som körs i Azure. Den kan också nås direkt via Internet från alla program som kan skicka en HTTPS-begäran och ta emot ett HTTPS-svar.

Installation

Alla funktioner som beskrivs i den här artikeln är tillgängliga i azure-servicemanagement-legacy paketet, som du kan installera med pip. Mer information om installation (till exempel om du är nybörjare på Python) finns i Installera Python och Azure SDK.

Anslut till tjänsthantering

För att ansluta till tjänsthanteringsslutpunkten behöver du ditt Azure-prenumerations-ID och ett giltigt hanteringscertifikat. Du kan hämta ditt prenumerations-ID via Azure-portalen.

Kommentar

Du kan nu använda certifikat som skapats med OpenSSL när du kör i Windows. Python 2.7.4 eller senare krävs. Vi rekommenderar att du använder OpenSSL i stället för .pfx, eftersom stöd för .pfx-certifikat sannolikt kommer att tas bort i framtiden.

Hanteringscertifikat i Windows/Mac/Linux (OpenSSL)

Du kan använda OpenSSL för att skapa ditt hanteringscertifikat. Du måste skapa två certifikat, ett för servern (en .cer fil) och ett för klienten (en .pem fil). Om du vill skapa .pem filen kör du:

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

Om du vill skapa certifikatet .cer kör du:

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

Mer information om Azure-certifikat finns i Certifikatöversikt för Azure Cloud Services. En fullständig beskrivning av OpenSSL-parametrar finns i dokumentationen på https://www.openssl.org/docs/manmaster/man1/req.html.

När du har skapat de här filerna laddar du upp .cer filen till Azure. I Azure-portalen går du till fliken Inställningar och väljer Ladda upp. Observera var du sparade .pem filen.

När du har hämtat ditt prenumerations-ID skapar du ett certifikat och laddar upp .cer filen till Azure och ansluter till Azure-hanteringsslutpunkten. Anslut genom att skicka prenumerations-ID:t och sökvägen till .pem filen till 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)

I föregående exempel sms är ett ServiceManagementService-objekt . Klassen ServiceManagementService är den primära klassen som används för att hantera Azure-tjänster.

Hanteringscertifikat i Windows (MakeCert)

Du kan skapa ett självsignerat hanteringscertifikat på datorn med hjälp makecert.exeav . Öppna en Visual Studio-kommandotolk som administratör och använd följande kommando och ersätt AzureCertificate med det certifikatnamn som du vill använda:

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

Kommandot skapar .cer filen och installerar den i det personliga certifikatarkivet. Mer information finns i Certifikatöversikt för Azure Cloud Services.

När du har skapat certifikatet laddar du upp .cer filen till Azure. I Azure-portalen går du till fliken Inställningar och väljer Ladda upp.

När du har hämtat ditt prenumerations-ID skapar du ett certifikat och laddar upp .cer filen till Azure och ansluter till Azure-hanteringsslutpunkten. Anslut genom att skicka prenumerations-ID:t och platsen för certifikatet i din Personligt certifikatarkiv till ServiceManagementService (ersätt återigen AzureCertificate med namnet på certifikatet).

from azure import *
from azure.servicemanagement import *

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

sms = ServiceManagementService(subscription_id, certificate_path)

I föregående exempel sms är ett ServiceManagementService-objekt . Klassen ServiceManagementService är den primära klassen som används för att hantera Azure-tjänster.

Lista tillgängliga platser

Om du vill visa en lista över de platser som är tillgängliga för värdtjänster använder du metoden 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)

När du skapar en molntjänst eller lagringstjänst måste du ange en giltig plats. Metoden list_locations returnerar alltid en uppdaterad lista över tillgängliga platser. När detta skrivs är de tillgängliga platserna:

  • Västeuropa
  • Europa, norra
  • Sydostasien
  • Asien, östra
  • Centrala USA
  • USA, norra centrala
  • USA, södra centrala
  • USA, västra
  • East US
  • Japan, östra
  • Japan, västra
  • Brasilien, södra
  • Australien, östra
  • Australien, sydöstra

Skapa en molntjänst

När du skapar ett program och kör det i Azure kallas koden och konfigurationen tillsammans för en Azure-molntjänst. (Det kallades en värdbaserad tjänst i tidigare Azure-versioner.) Du kan använda metoden create_hosted_service för att skapa en ny värdbaserad tjänst. Skapa tjänsten genom att ange ett värdbaserat tjänstnamn (som måste vara unikt i Azure), en etikett (automatiskt kodad till base64), en beskrivning och en plats.

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)

Du kan lista alla värdbaserade tjänster för din prenumeration med metoden 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('')

Om du vill få information om en viss värdbaserad tjänst skickar du namnet på den värdbaserade tjänsten till metoden 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)

När du har skapat en molntjänst distribuerar du koden till tjänsten med metoden create_deployment .

Ta bort en molntjänst

Du kan ta bort en molntjänst genom att skicka tjänstnamnet till metoden delete_hosted_service .

sms.delete_hosted_service('myhostedservice')

Innan du kan ta bort en tjänst måste alla distributioner för tjänsten först tas bort. Mer information finns i Ta bort en distribution.

Ta bort en distribution

Om du vill ta bort en distribution använder du metoden delete_deployment . I följande exempel visas hur du tar bort en distribution med namnet v1:

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Skapa en lagringstjänst

En lagringstjänst ger dig åtkomst till Azure-blobbar, tabeller och köer. För att skapa en lagringstjänst behöver du ett namn för tjänsten (mellan 3 och 24 gemener och unika i Azure). Du behöver också en beskrivning, en etikett (upp till 100 tecken, automatiskt kodad till base64) och en plats. I följande exempel visas hur du skapar en lagringstjänst genom att ange en plats:

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)

I föregående exempel kan statusen för den create_storage_account åtgärden hämtas genom att skicka resultatet som returneras av create_storage_account till metoden get_operation_status .

Du kan lista dina lagringskonton och deras egenskaper med metoden 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('')

Ta bort en lagringstjänst

Om du vill ta bort en lagringstjänst skickar du namnet på lagringstjänsten till metoden delete_storage_account . Om du tar bort en lagringstjänst tas alla data som lagras i tjänsten bort (blobar, tabeller och köer).

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

sms.delete_storage_account('mystorageaccount')

Lista tillgängliga operativsystem

Om du vill visa en lista över de operativsystem som är tillgängliga för värdtjänster använder du metoden 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))

Du kan också använda metoden list_operating_system_families , som grupperar operativsystemen efter familj.

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

Skapa en operativsystemavbildning

Om du vill lägga till en operativsystemavbildning på avbildningslagringsplatsen använder du metoden 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)

Om du vill visa en lista över tillgängliga operativsystemavbildningar använder du metoden list_os_images . Den innehåller alla plattformsbilder och användarbilder.

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

Ta bort en operativsystemavbildning

Om du vill ta bort en användarbild använder du metoden 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)

Skapa en virtuell dator

Om du vill skapa en virtuell dator måste du först skapa en molntjänst. Skapa sedan distributionen av den virtuella datorn med hjälp av metoden 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')

Ta bort en virtuell dator

Om du vill ta bort en virtuell dator tar du först bort distributionen med hjälp av metoden delete_deployment .

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Molntjänsten kan sedan tas bort med hjälp av metoden delete_hosted_service .

sms.delete_hosted_service(service_name='myvm')

Skapa en virtuell dator från en avbildad avbildning av en virtuell dator

Om du vill avbilda en vm-avbildning anropar du först metoden 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
    )

Använd list_vm_images-API:et för att kontrollera att avbildningen har avbildats. Kontrollera att bilden visas i resultatet.

images = sms.list_vm_images()

Om du vill skapa den virtuella datorn med hjälp av den insamlade avbildningen använder du metoden create_virtual_machine_deployment som tidigare, men den här gången skickas i vm_image_name i stället.

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)

Mer information om hur du avbildar en virtuell Linux-dator i den klassiska distributionsmodellen finns i Avbilda en virtuell Linux-dator.

Mer information om hur du avbildar en virtuell Windows-dator i den klassiska distributionsmodellen finns i Avbilda en virtuell Windows-dator.

Nästa steg

Nu när du har lärt dig grunderna för tjänsthantering kan du komma åt referensdokumentationen för Complete API för Azure Python SDK och enkelt utföra komplexa uppgifter för att hantera ditt Python-program.

Mer information finns i Python Developer Center.