Použití správy služeb z Pythonu

Upozornění

Tento článek odkazuje na CentOS, linuxovou distribuci, která se blíží stavu Konec životnosti (EOL). Zvažte své použití a plánování odpovídajícím způsobem. Další informace najdete v doprovodných materiálech CentOS End Of Life.

Důležité

Služba Cloud Services (Classic) je teď pro nové zákazníky zastaralá a bude vyřazena 31. srpna 2024 pro všechny zákazníky. Nová nasazení by měla používat nový model nasazení založený na Azure Resource Manageru na Azure Cloud Services (rozšířená podpora).

V této příručce se dozvíte, jak programově provádět běžné úlohy správy služeb z Pythonu. Třída ServiceManagementService v sadě Azure SDK pro Python podporuje programový přístup k velké části funkcí souvisejících se správou služeb, které jsou k dispozici na webu Azure Portal. Pomocí této funkce můžete vytvářet, aktualizovat a odstraňovat cloudové služby, nasazení, služby pro správu dat a virtuální počítače. Tato funkce může být užitečná při vytváření aplikací, které potřebují programový přístup ke správě služeb.

Co je správa služeb?

Rozhraní API pro správu služeb Azure poskytuje programový přístup k velké části funkcí správy služeb, které jsou dostupné prostřednictvím webu Azure Portal. Ke správě cloudových služeb a účtů úložiště můžete použít sadu Azure SDK pro Python.

Pokud chcete použít rozhraní API pro správu služeb, musíte vytvořit účet Azure.

Koncepty

Sada Azure SDK pro Python zabalí rozhraní API pro správu služeb, což je rozhraní REST API. Všechny operace rozhraní API se provádějí přes protokol TLS a vzájemně se ověřují pomocí certifikátů X.509 v3. Ke službě pro správu je možné přistupovat v rámci služby spuštěné v Azure. Je také přístupný přímo přes internet z libovolné aplikace, která může odeslat požadavek HTTPS a přijmout odpověď HTTPS.

Instalace

Všechny funkce popsané v tomto článku jsou k dispozici v azure-servicemanagement-legacy balíčku, který můžete nainstalovat pomocí nástroje pip. Další informace o instalaci (například pokud s Pythonem začínáte), najdete v tématu Instalace Pythonu a sady Azure SDK.

Připojení ke správě služeb

Pokud se chcete připojit ke koncovému bodu správy služby, potřebujete ID předplatného Azure a platný certifikát pro správu. ID předplatného můžete získat prostřednictvím webu Azure Portal.

Poznámka:

Teď můžete použít certifikáty vytvořené pomocí OpenSSL při spuštění ve Windows. Vyžaduje se Python 2.7.4 nebo novější. Doporučujeme místo .pfx používat OpenSSL, protože podpora certifikátů .pfx bude pravděpodobně v budoucnu odebrána.

Certifikáty pro správu ve Windows/Mac/Linuxu (OpenSSL)

K vytvoření certifikátu pro správu můžete použít OpenSSL . Musíte vytvořit dva certifikáty, jeden pro server ( .cer soubor) a jeden pro klienta ( .pem soubor). Pokud chcete soubor vytvořit .pem , spusťte:

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

Pokud chcete vytvořit .cer certifikát, spusťte:

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

Další informace o certifikátech Azure najdete v tématu Přehled certifikátů pro Azure Cloud Services. Úplný popis parametrů OpenSSL najdete v dokumentaci na adrese https://www.openssl.org/docs/manmaster/man1/req.html.

Po vytvoření těchto souborů nahrajte .cer soubor do Azure. Na webu Azure Portal na kartě Nastavení vyberte Nahrát. Všimněte si, kam jste soubor uložili .pem .

Po získání ID předplatného vytvořte certifikát a nahrajte .cer soubor do Azure, připojte se ke koncovému bodu správy Azure. Připojení předáním ID předplatného a cesty k souboru službě .pemServiceManagementService.

from azure import *
from azure.servicemanagement import *

subscription_id = '<your_subscription_id>'
certificate_path = '<path_to_.pem_certificate>'

sms = ServiceManagementService(subscription_id, certificate_path)

V předchozím příkladu smsje ServiceManagementService objekt. Třída ServiceManagementService je primární třídou používanou ke správě služeb Azure.

Certifikáty pro správu ve Windows (MakeCert)

Certifikát pro správu podepsaný svým držitelem můžete na svém počítači vytvořit pomocí makecert.exepříkazu . Otevřete příkazový řádek sady Visual Studio jako správce a použijte následující příkaz a nahraďte AzureCertificate názvem certifikátu, který chcete použít:

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

Příkaz vytvoří .cer soubor a nainstaluje ho do osobního úložiště certifikátů. Další informace najdete v tématu Přehled certifikátů pro Azure Cloud Services.

Po vytvoření certifikátu nahrajte .cer soubor do Azure. Na webu Azure Portal na kartě Nastavení vyberte Nahrát.

Po získání ID předplatného vytvořte certifikát a nahrajte .cer soubor do Azure, připojte se ke koncovému bodu správy Azure. Připojení předáním ID předplatného a umístěním certifikátu ve vašem účtu Osobní úložiště certifikátů do ServiceManagementService (znovu nahraďte AzureCertificate názvem vašeho certifikátu).

from azure import *
from azure.servicemanagement import *

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

sms = ServiceManagementService(subscription_id, certificate_path)

V předchozím příkladu smsje ServiceManagementService objekt. Třída ServiceManagementService je primární třídou používanou ke správě služeb Azure.

Výpis dostupných umístění

Pokud chcete zobrazit seznam umístění dostupných pro hostitelské služby, použijte metodu 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)

Při vytváření cloudové služby nebo služby úložiště musíte zadat platné umístění. Metoda list_locations vždy vrátí aktuální seznam aktuálně dostupných umístění. Od tohoto zápisu jsou dostupná umístění:

  • Západní Evropa
  • Severní Evropa
  • Southeast Asia
  • Východní Asie
  • USA – střed
  • USA – středosever
  • Středojižní USA
  • USA – západ
  • East US
  • Japonsko – východ
  • Japonsko – západ
  • Brazílie – jih
  • Austrálie – východ
  • Austrálie – jihovýchod

Vytvoření cloudové služby

Když vytvoříte aplikaci a spustíte ji v Azure, kód a konfigurace se společně nazývají cloudová služba Azure. (V dřívějších verzích Azure se označuje jako hostovaná služba .) K vytvoření nové hostované služby můžete použít metodu create_hosted_service . Vytvořte službu tak, že poskytnete název hostované služby (který musí být v Azure jedinečný), popisek (automaticky zakódovaný do base64), popis a umístění.

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)

Pomocí metody list_hosted_services můžete zobrazit seznam všech hostovaných služeb pro vaše předplatné.

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

Pokud chcete získat informace o konkrétní hostované službě, předejte název hostované služby get_hosted_service_properties metodě.

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 vytvoření cloudové služby nasaďte kód do služby pomocí metody create_deployment .

Odstranění cloudové služby

Cloudovou službu můžete odstranit předáním názvu služby metodě delete_hosted_service .

sms.delete_hosted_service('myhostedservice')

Před odstraněním služby musí být nejprve odstraněna všechna nasazení služby. Další informace najdete v tématu Odstranění nasazení.

Odstranění nasazení

Pokud chcete odstranit nasazení, použijte metodu delete_deployment . Následující příklad ukazuje, jak odstranit nasazení s názvem v1:

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Vytvoření služby úložiště

Služba úložiště poskytuje přístup k objektům blob, tabulkám a frontám Azure. Pokud chcete vytvořit službu úložiště, potřebujete název služby (3 až 24 malých a jedinečných znaků v rámci Azure). Potřebujete také popis, popisek (až 100 znaků, automaticky kódovaný do base64) a umístění. Následující příklad ukazuje, jak vytvořit službu úložiště zadáním umístění:

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)

V předchozím příkladu je možné načíst stav operace create_storage_account předáním výsledku vráceného create_storage_account metodě get_operation_status .

Pomocí metody list_storage_accounts můžete zobrazit seznam účtů úložiště a jejich vlastností.

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

Odstranění služby úložiště

Pokud chcete odstranit službu úložiště, předejte název služby úložiště metodě delete_storage_account . Odstranění služby úložiště odstraní všechna data uložená ve službě (objekty blob, tabulky a fronty).

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

sms.delete_storage_account('mystorageaccount')

Výpis dostupných operačních systémů

Pokud chcete zobrazit seznam operačních systémů dostupných pro hostitelské služby, použijte metodu 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))

Alternativně můžete použít metodu list_operating_system_families , která seskupuje operační systémy podle rodiny.

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

Vytvoření image operačního systému

Pokud chcete do úložiště imagí přidat image operačního systému, použijte metodu 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)

Pokud chcete zobrazit seznam dostupných imagí operačního systému, použijte metodu list_os_images . Zahrnuje všechny image platformy a uživatelské image.

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

Odstranění image operačního systému

Pokud chcete odstranit obrázek uživatele, použijte metodu 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)

Vytvoření virtuálního počítače

Pokud chcete vytvořit virtuální počítač, musíte nejprve vytvořit cloudovou službu. Pak vytvořte nasazení virtuálního počítače pomocí 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')

Odstranění virtuálního počítače

Pokud chcete odstranit virtuální počítač, nejprve odstraňte nasazení pomocí 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')

Cloudovou službu pak můžete odstranit pomocí metody delete_hosted_service .

sms.delete_hosted_service(service_name='myvm')

Vytvoření virtuálního počítače z image zachyceného virtuálního počítače

Pokud chcete zachytit image virtuálního počítače, nejprve zavoláte metodu 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
    )

Abyste měli jistotu, že jste image úspěšně zachytili, použijte rozhraní API list_vm_images . Ujistěte se, že se ve výsledcích zobrazí váš obrázek.

images = sms.list_vm_images()

Pokud chcete nakonec vytvořit virtuální počítač pomocí zachycené image, použijte metodu create_virtual_machine_deployment jako předtím, ale tentokrát předejte 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)

Další informace o zachycení virtuálního počítače s Linuxem v modelu nasazení Classic najdete v tématu Zachycení virtuálního počítače s Linuxem.

Další informace o zachycení virtuálního počítače s Windows v modelu nasazení Classic najdete v tématu Zachycení virtuálního počítače s Windows.

Další kroky

Teď, když jste se seznámili se základy správy služeb, můžete získat přístup k referenční dokumentaci k kompletnímu rozhraní API pro sadu Azure Python SDK a snadno provádět složité úlohy pro správu aplikace v Pythonu.

Další informace naleznete ve Středisku pro vývojáře Python.