Korzystanie z zarządzania usługami w języku Python

Ważne

Usługi Cloud Services (wersja klasyczna) są teraz przestarzałe dla nowych klientów i zostaną wycofane 31 sierpnia 2024 r. dla wszystkich klientów. Nowe wdrożenia powinny korzystać z nowego modelu wdrażania opartego na usłudze Azure Resource Manager w usługach Azure Cloud Services (rozszerzona obsługa).

W tym przewodniku pokazano, jak programowo wykonywać typowe zadania zarządzania usługami w języku Python. Klasa ServiceManagementService w zestawie Azure SDK dla języka Python obsługuje programowy dostęp do wielu funkcji związanych z zarządzaniem usługami dostępnych w witrynie Azure Portal. Za pomocą tej funkcji można tworzyć, aktualizować i usuwać usługi w chmurze, wdrożenia, usługi zarządzania danymi i maszyny wirtualne. Ta funkcja może być przydatna w tworzeniu aplikacji wymagających programowego dostępu do zarządzania usługami.

Co to jest zarządzanie usługami?

Interfejs API usługi Azure Service Management zapewnia programowy dostęp do wielu funkcji zarządzania usługami dostępnych za pośrednictwem witryny Azure Portal. Zestaw Azure SDK dla języka Python umożliwia zarządzanie usługami w chmurze i kontami magazynu.

Aby użyć interfejsu API usługi Service Management, musisz utworzyć konto platformy Azure.

Pojęcia

Zestaw Azure SDK dla języka Python opakowuje interfejs API zarządzania usługami, który jest interfejsem API REST. Wszystkie operacje interfejsu API są wykonywane za pośrednictwem protokołu TLS i wzajemnie uwierzytelniane przy użyciu certyfikatów X.509 v3. Dostęp do usługi zarządzania można uzyskać z poziomu usługi uruchomionej na platformie Azure. Dostęp do niego można również uzyskać bezpośrednio za pośrednictwem Internetu z dowolnej aplikacji, która może wysyłać żądanie HTTPS i odbierać odpowiedź HTTPS.

Instalacja

Wszystkie funkcje opisane w tym artykule są dostępne w azure-servicemanagement-legacy pakiecie, który można zainstalować za pomocą narzędzia pip. Aby uzyskać więcej informacji na temat instalacji (na przykład jeśli dopiero zaczynasz korzystać z języka Python), zobacz Instalowanie języka Python i zestawu Azure SDK.

Nawiązywanie połączenia z zarządzaniem usługami

Aby nawiązać połączenie z punktem końcowym zarządzania usługami, potrzebny jest identyfikator subskrypcji platformy Azure i prawidłowy certyfikat zarządzania. Identyfikator subskrypcji można uzyskać za pośrednictwem witryny Azure Portal.

Uwaga

Teraz można używać certyfikatów utworzonych za pomocą protokołu OpenSSL podczas uruchamiania w systemie Windows. Wymagany jest język Python w wersji 2.7.4 lub nowszej. Zalecamy używanie biblioteki OpenSSL zamiast pfx, ponieważ w przyszłości prawdopodobnie zostanie usunięta obsługa certyfikatów pfx.

Certyfikaty zarządzania w systemie Windows/Mac/Linux (OpenSSL)

Możesz użyć protokołu OpenSSL do utworzenia certyfikatu zarządzania. Musisz utworzyć dwa certyfikaty, jeden dla serwera (.cerplik) i jeden dla klienta (plik)..pem Aby utworzyć .pem plik, wykonaj następujące polecenie:

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

Aby utworzyć .cer certyfikat, wykonaj następujące czynności:

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

Aby uzyskać więcej informacji na temat certyfikatów platformy Azure, zobacz Omówienie certyfikatów dla usług Azure Cloud Services. Pełny opis parametrów openSSL można znaleźć w dokumentacji w witrynie https://www.openssl.org/docs/apps/openssl.html.

Po utworzeniu tych plików przekaż plik na platformę .cer Azure. W witrynie Azure Portal na karcie Ustawienia wybierz pozycję Przekaż. Zanotuj .pem miejsce zapisania pliku.

Po uzyskaniu identyfikatora subskrypcji utwórz certyfikat i przekaż .cer plik na platformę Azure, połącz się z punktem końcowym zarządzania platformy Azure. Połącz, przekazując identyfikator subskrypcji i ścieżkę do pliku do .pemusługi 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)

W poprzednim przykładzie sms jest obiektem ServiceManagementService . Klasa ServiceManagementService jest klasą podstawową używaną do zarządzania usługami platformy Azure.

Certyfikaty zarządzania w systemie Windows (MakeCert)

Możesz utworzyć certyfikat zarządzania z podpisem własnym na maszynie przy użyciu polecenia makecert.exe. Otwórz wiersz polecenia programu Visual Studio jako administrator i użyj następującego polecenia, zastępując element AzureCertificate nazwą certyfikatu, którego chcesz użyć:

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

Polecenie tworzy .cer plik i instaluje go w magazynie certyfikatów osobistych . Aby uzyskać więcej informacji, zobacz Omówienie certyfikatów dla usług Azure Cloud Services.

Po utworzeniu certyfikatu przekaż plik na platformę .cer Azure. W witrynie Azure Portal na karcie Ustawienia wybierz pozycję Przekaż.

Po uzyskaniu identyfikatora subskrypcji utwórz certyfikat i przekaż .cer plik na platformę Azure, połącz się z punktem końcowym zarządzania platformy Azure. Połącz się, przekazując identyfikator subskrypcji i lokalizację certyfikatu w magazynie certyfikatów osobistych do usługi ServiceManagementService (ponownie zastąp element AzureCertificate nazwą certyfikatu).

from azure import *
from azure.servicemanagement import *

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

sms = ServiceManagementService(subscription_id, certificate_path)

W poprzednim przykładzie sms jest obiektem ServiceManagementService . Klasa ServiceManagementService jest klasą podstawową używaną do zarządzania usługami platformy Azure.

Wyświetlanie listy dostępnych lokalizacji

Aby wyświetlić listę lokalizacji dostępnych dla usług hostingu, użyj metody 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)

Podczas tworzenia usługi w chmurze lub usługi magazynu należy podać prawidłową lokalizację. Metoda list_locations zawsze zwraca aktualną listę aktualnie dostępnych lokalizacji. Zgodnie z tym zapisem dostępne lokalizacje to:

  • West Europe
  • Europa Północna
  • Azja Południowo-Wschodnia
  • Azja Wschodnia
  • Central US
  • Północno-środkowe stany USA
  • South Central US
  • Zachodnie stany USA
  • East US
  • Japonia Wschodnia
  • Japonia Zachodnia
  • Brazylia Południowa
  • Australia Wschodnia
  • Australia Południowo-Wschodnia

Tworzenie usługi w chmurze

Podczas tworzenia aplikacji i uruchamiania jej na platformie Azure kod i konfiguracja są nazywane usługą w chmurze platformy Azure. (Była znana jako usługa hostowana we wcześniejszych wersjach platformy Azure). Za pomocą metody create_hosted_service można utworzyć nową hostowaną usługę. Utwórz usługę, podając nazwę hostowanej usługi (która musi być unikatowa na platformie Azure), etykietę (automatycznie zakodowaną w formacie base64), opis i lokalizację.

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)

Listę wszystkich hostowanych usług dla subskrypcji można wyświetlić za pomocą metody 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('')

Aby uzyskać informacje o określonej usłudze hostowanej, przekaż nazwę hostowanej usługi do metody 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)

Po utworzeniu usługi w chmurze wdróż kod w usłudze przy użyciu metody create_deployment .

Usuwanie usługi w chmurze

Usługę w chmurze można usunąć, przekazując nazwę usługi do metody delete_hosted_service .

sms.delete_hosted_service('myhostedservice')

Przed usunięciem usługi należy najpierw usunąć wszystkie wdrożenia usługi. Aby uzyskać więcej informacji, zobacz Usuwanie wdrożenia.

Usuwanie wdrożenia

Aby usunąć wdrożenie, użyj metody delete_deployment . W poniższym przykładzie pokazano, jak usunąć wdrożenie o nazwie v1:

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Tworzenie usługi magazynu

Usługa magazynu zapewnia dostęp do obiektów blob platformy Azure, tabel i kolejek. Aby utworzyć usługę magazynu, potrzebujesz nazwy usługi (od 3 do 24 małych liter i unikatowych w obrębie platformy Azure). Potrzebny jest również opis, etykieta (maksymalnie 100 znaków, automatycznie zakodowana w formacie base64) i lokalizacja. W poniższym przykładzie pokazano, jak utworzyć usługę magazynu, określając lokalizację:

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)

W poprzednim przykładzie można pobrać stan operacji create_storage_account , przekazując wynik zwrócony przez create_storage_account do metody get_operation_status .

Możesz wyświetlić listę kont magazynu i ich właściwości za pomocą metody 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('')

Usuwanie usługi magazynu

Aby usunąć usługę magazynu, przekaż nazwę usługi magazynu do metody delete_storage_account . Usunięcie usługi magazynu powoduje usunięcie wszystkich danych przechowywanych w usłudze (obiekty blob, tabele i kolejki).

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

sms.delete_storage_account('mystorageaccount')

Lista dostępnych systemów operacyjnych

Aby wyświetlić listę systemów operacyjnych dostępnych dla usług hostingu, użyj metody 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))

Alternatywnie można użyć metody list_operating_system_families , która grupuje systemy operacyjne według rodziny.

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

Tworzenie obrazu systemu operacyjnego

Aby dodać obraz systemu operacyjnego do repozytorium obrazów, użyj metody 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)

Aby wyświetlić listę dostępnych obrazów systemu operacyjnego, użyj metody list_os_images . Zawiera wszystkie obrazy platformy i obrazy użytkowników.

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

Usuwanie obrazu systemu operacyjnego

Aby usunąć obraz użytkownika, użyj metody 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)

Tworzenie maszyny wirtualnej

Aby utworzyć maszynę wirtualną, należy najpierw utworzyć usługę w chmurze. Następnie utwórz wdrożenie maszyny wirtualnej przy użyciu metody 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')

Usuwa maszynę wirtualną

Aby usunąć maszynę wirtualną, najpierw usuń wdrożenie przy użyciu metody delete_deployment .

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Następnie można usunąć usługę w chmurze przy użyciu metody delete_hosted_service .

sms.delete_hosted_service(service_name='myvm')

Tworzenie maszyny wirtualnej na podstawie przechwyconego obrazu maszyny wirtualnej

Aby przechwycić obraz maszyny wirtualnej, należy najpierw wywołać metodę 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
    )

Aby upewnić się, że obraz został pomyślnie przechwycony, użyj interfejsu API list_vm_images . Upewnij się, że obraz jest wyświetlany w wynikach.

images = sms.list_vm_images()

Aby na koniec utworzyć maszynę wirtualną przy użyciu przechwyconego obrazu, użyj metody create_virtual_machine_deployment tak jak wcześniej, ale tym razem przekażesz vm_image_name zamiast tego.

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)

Aby dowiedzieć się więcej na temat przechwytywania maszyny wirtualnej z systemem Linux w klasycznym modelu wdrażania, zobacz Przechwytywanie maszyny wirtualnej z systemem Linux.

Aby dowiedzieć się więcej na temat przechwytywania maszyny wirtualnej z systemem Windows w klasycznym modelu wdrażania, zobacz Przechwytywanie maszyny wirtualnej z systemem Windows.

Następne kroki

Teraz, gdy znasz już podstawy zarządzania usługami, możesz uzyskać dostęp do dokumentacji kompletnej dokumentacji interfejsu API dla zestawu Azure Python SDK i łatwo wykonywać złożone zadania w celu zarządzania aplikacją języka Python.

Aby uzyskać więcej informacji, zobacz Centrum deweloperów Python.