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

Uwaga

W tym artykule odwołuje się do systemu CentOS — dystrybucji systemu Linux, która zbliża się do stanu zakończenia życia (EOL). Rozważ odpowiednie użycie i planowanie. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.

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 używać nowego modelu wdrażania opartego na usłudze Azure Resource Manager w usługach Azure Cloud Services (wsparcie dodatkowe).

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 dostęp programowy do większości funkcji związanych z zarządzaniem usługami, które są dostępne 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, które wymagają programowego dostępu do zarządzania usługami.

Co to jest zarządzanie usługami?

Interfejs API usługi Azure Service Management zapewnia dostęp programowy 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 w wersji 3. 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.

Połączenie do zarządzania 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żesz 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ż obsługa certyfikatów pfx prawdopodobnie zostanie usunięta w przyszłości.

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

Możesz użyć protokołu OpenSSL do utworzenia certyfikatu zarządzania. Należy utworzyć dwa certyfikaty: jeden dla serwera ( .cer pliku) i jeden dla klienta ( .pem plik). 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 protokołu OpenSSL można znaleźć w dokumentacji pod adresem https://www.openssl.org/docs/manmaster/man1/req.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łączenie przez przekazanie identyfikatora subskrypcji i ścieżki 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 obiekt 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 osobistym magazynie certyfikatów. 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łączenie przez przekazanie identyfikatora subskrypcji i lokalizacji certyfikatu w twoim Osobisty magazyn certyfikatów 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 obiekt 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 hostingowych, 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. Od tego zapisu dostępne lokalizacje to:

  • West Europe
  • Europa Północna
  • Southeast Asia
  • Azja Wschodnia
  • Środkowe stany USA
  • 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). Możesz użyć metody create_hosted_service, aby utworzyć nową hostowaną usługę. Utwórz usługę, podając nazwę hostowanej usługi (która musi być unikatowa na platformie Azure), etykieta (automatycznie zakodowana w formacie base64), opis i lokalizacja.

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)

Możesz wyświetlić listę wszystkich hostowanych usług dla subskrypcji przy użyciu 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 (do 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 stan operacji create_storage_account można pobrać, 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 hostingowych, 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')

Usuwanie maszyny wirtualnej

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 jak poprzednio, ale tym razem przekażesz 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)

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 pełnej dokumentacji referencyjnej interfejsu API dla zestawu Azure Python SDK i łatwo wykonywać złożone zadania w celu zarządzania aplikacją w języku Python.

Więcej informacji możesz znaleźć w Centrum deweloperów języka Python.