Szolgáltatáskezelés használata a Pythonból

Figyelemfelhívás

Ez a cikk a CentOS-ra, egy olyan Linux-disztribúcióra hivatkozik, amely közel áll az élettartam (EOL) állapotához. Ennek megfelelően fontolja meg a használatot és a tervezést. További információ: CentOS End Of Life útmutató.

Fontos

A Cloud Services (klasszikus) mostantól elavult az új ügyfelek számára, és 2024. augusztus 31-én megszűnik minden ügyfél számára. Az új üzemelő példányoknak az Azure Cloud Services új Azure Resource Manager-alapú üzemi modelljét (kiterjesztett támogatás) kell használniuk.

Ez az útmutató bemutatja, hogyan végezhet programozott módon általános szolgáltatásfelügyeleti feladatokat a Pythonból. Az Azure SDK for Python ServiceManagementService osztálya támogatja az Azure Portalon elérhető szolgáltatásfelügyelettel kapcsolatos funkciók programozott elérését. Ezzel a funkcióval felhőszolgáltatásokat, üzembe helyezéseket, adatkezelési szolgáltatásokat és virtuális gépeket hozhat létre, frissíthet és törölhet. Ez a funkció hasznos lehet olyan alkalmazások létrehozásához, amelyek programozott hozzáférést igényelnek a szolgáltatáskezeléshez.

Mi a szolgáltatáskezelés?

Az Azure Service Management API programozott hozzáférést biztosít az Azure Portalon elérhető szolgáltatásfelügyeleti funkciók nagy részének. A Pythonhoz készült Azure SDK-val kezelheti a felhőszolgáltatásokat és a tárfiókokat.

A Service Management API használatához létre kell hoznia egy Azure-fiókot.

Fogalmak

A Pythonhoz készült Azure SDK becsomagolja a Service Management API-t, amely egy REST API. Minden API-művelet TLS-en keresztül történik, és X.509 v3-tanúsítványokkal kölcsönösen hitelesíthető. A felügyeleti szolgáltatás egy Azure-ban futó szolgáltatásból érhető el. Közvetlenül az interneten keresztül is elérhető bármely olyan alkalmazásból, amely HTTPS-kérést küldhet, és HTTPS-választ kaphat.

Telepítés

A cikkben ismertetett összes funkció elérhető a azure-servicemanagement-legacy csomagban, amelyet a pip használatával telepíthet. A telepítéssel kapcsolatos további információkért (például ha még nem használt Pythont), olvassa el a Python és az Azure SDK telepítését ismertető témakört.

Csatlakozás a szolgáltatáskezeléshez

A szolgáltatásfelügyeleti végponthoz való csatlakozáshoz szüksége van az Azure-előfizetés azonosítóra és egy érvényes felügyeleti tanúsítványra. Az előfizetés azonosítóját az Azure Portalon szerezheti be.

Feljegyzés

Mostantól használhatja az OpenSSL-vel létrehozott tanúsítványokat Windows rendszeren való futtatáskor. Python 2.7.4 vagy újabb verzióra van szükség. Javasoljuk, hogy a .pfx helyett az OpenSSL-t használja, mert a .pfx-tanúsítványok támogatása valószínűleg a jövőben megszűnik.

Felügyeleti tanúsítványok Windows/Mac/Linux rendszeren (OpenSSL)

Az OpenSSL használatával létrehozhatja a felügyeleti tanúsítványt. Két tanúsítványt kell létrehoznia, egyet a kiszolgálónak (egy .cer fájlt), egyet pedig az ügyfélnek (egy .pem fájlt). A fájl létrehozásához hajtsa végre a .pem következőt:

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

A tanúsítvány létrehozásához hajtsa végre a .cer következőt:

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

Az Azure-tanúsítványokkal kapcsolatos további információkért tekintse meg az Azure Cloud Services tanúsítványainak áttekintését. Az OpenSSL-paraméterek teljes leírását a következő helyen https://www.openssl.org/docs/manmaster/man1/req.htmltalálja: .

A fájlok létrehozása után töltse fel a fájlt az .cer Azure-ba. Az Azure Portal Gépház lapján válassza a Feltöltés lehetőséget. Jegyezze fel, hogy hová mentette a .pem fájlt.

Az előfizetés-azonosító beszerzése után hozzon létre egy tanúsítványt, és töltse fel a fájlt az .cer Azure-ba, és csatlakozzon az Azure felügyeleti végpontjához. Csatlakozás az előfizetés azonosítójának és a fájl elérési útjának .pem a ServiceManagementService-nek való átadásával.

from azure import *
from azure.servicemanagement import *

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

sms = ServiceManagementService(subscription_id, certificate_path)

Az előző példában sms egy ServiceManagementService objektum látható. A ServiceManagementService osztály az Azure-szolgáltatások kezeléséhez használt elsődleges osztály.

Felügyeleti tanúsítványok Windows rendszeren (MakeCert)

Önaláírt felügyeleti tanúsítványt a számítógépen a következő használatával makecert.exehozhat létre: . Nyisson meg egy Visual Studio-parancssort rendszergazdaként, és használja a következő parancsot, és cserélje le az AzureCertificate-et a használni kívánt tanúsítványnévre:

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

A parancs létrehozza a .cer fájlt, és telepíti a Személyes tanúsítványtárolóban. További információkért tekintse meg az Azure Cloud Services tanúsítványainak áttekintését.

A tanúsítvány létrehozása után töltse fel a fájlt az .cer Azure-ba. Az Azure Portal Gépház lapján válassza a Feltöltés lehetőséget.

Az előfizetés-azonosító beszerzése után hozzon létre egy tanúsítványt, és töltse fel a fájlt az .cer Azure-ba, és csatlakozzon az Azure felügyeleti végpontjához. Csatlakozás az előfizetés azonosítójának és a tanúsítvány helyének aSzemélyes tanúsítványtároló a ServiceManagementService szolgáltatásban (ismét cserélje le az AzureCertificate-et a tanúsítvány nevére).

from azure import *
from azure.servicemanagement import *

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

sms = ServiceManagementService(subscription_id, certificate_path)

Az előző példában sms egy ServiceManagementService objektum látható. A ServiceManagementService osztály az Azure-szolgáltatások kezeléséhez használt elsődleges osztály.

Elérhető helyek listázása

A szolgáltatások üzemeltetéséhez elérhető helyek listájához használja a list_locations metódust.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

result = sms.list_locations()
for location in result:
    print(location.name)

Felhőszolgáltatás vagy tárolási szolgáltatás létrehozásakor érvényes helyet kell megadnia. A list_locations metódus mindig a jelenleg elérhető helyek naprakész listáját adja vissza. Az írástól a rendelkezésre álló helyek a következők:

  • Nyugat-Európa
  • Észak-Európa
  • Délkelet-Ázsia
  • Kelet-Ázsia
  • Az USA középső régiója
  • USA északi középső régiója
  • USA déli középső régiója
  • USA nyugati régiója
  • USA keleti régiója
  • Kelet-Japán
  • Nyugat-Japán
  • Dél-Brazília
  • Kelet-Ausztrália
  • Délkelet-Ausztrália

Felhőszolgáltatás létrehozása

Amikor létrehoz egy alkalmazást, és az Azure-ban futtatja, a kód és a konfiguráció együttesen Azure-felhőszolgáltatásnak lesz nevezve. (Korábbi Azure-kiadásokban üzemeltetett szolgáltatásként ismerték.) A create_hosted_service metódussal új üzemeltetett szolgáltatást hozhat létre. Hozzon létre egy üzemeltetett szolgáltatásnevet (amelynek egyedinek kell lennie az Azure-ban), egy címkét (automatikusan a base64-be kódolva), egy leírást és egy helyet.

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)

Az előfizetéshez tartozó összes üzemeltetett szolgáltatást a list_hosted_services metódussal listázhatja.

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

Ha egy adott üzemeltetett szolgáltatásról szeretne információt kapni, adja át az üzemeltetett szolgáltatás nevét a get_hosted_service_properties metódusnak.

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)

Miután létrehozott egy felhőszolgáltatást, helyezze üzembe a kódot a szolgáltatásban a create_deployment metódussal.

Felhőszolgáltatás törlése

A felhőszolgáltatás törléséhez adja át a szolgáltatás nevét a delete_hosted_service metódusnak.

sms.delete_hosted_service('myhostedservice')

Mielőtt törölhet egy szolgáltatást, először törölnie kell a szolgáltatás összes üzembe helyezését. További információ: Üzembe helyezés törlése.

Üzembe helyezés törlése

Az üzembe helyezés törléséhez használja a delete_deployment metódust. Az alábbi példa bemutatja, hogyan törölhet egy üzembe helyezést:v1

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Társzolgáltatás létrehozása

A tárolási szolgáltatás hozzáférést biztosít az Azure-blobokhoz, táblákhoz és üzenetsorokhoz. Tárolószolgáltatás létrehozásához szüksége van a szolgáltatás nevére (3–24 kisbetű és egyedi az Azure-ban). Szüksége van egy leírásra, egy címkére (legfeljebb 100 karakter, automatikusan base64-be kódolva) és egy helyre. Az alábbi példa bemutatja, hogyan hozhat létre tárolási szolgáltatást egy hely megadásával:

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)

Az előző példában a create_storage_account művelet állapota lekérhető úgy, hogy a create_storage_account által visszaadott eredményt átadja a get_operation_status metódusnak.

A tárfiókokat és azok tulajdonságait a list_storage_accounts metódussal listázhatja.

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

Tárolási szolgáltatás törlése

Egy tárolási szolgáltatás törléséhez adja át a tárolási szolgáltatás nevét a delete_storage_account metódusnak. A tárolási szolgáltatás törlése törli a szolgáltatásban tárolt összes adatot (blobokat, táblákat és üzenetsorokat).

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

sms.delete_storage_account('mystorageaccount')

Elérhető operációs rendszerek listázása

A szolgáltatások üzemeltetéséhez elérhető operációs rendszerek listázásához használja a list_operating_systems metódust.

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

Másik lehetőségként használhatja a list_operating_system_families metódust, amely család szerint csoportosítja az operációs rendszereket.

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

Operációs rendszer lemezképének létrehozása

Ha operációsrendszer-lemezképet szeretne hozzáadni a rendszerképtárhoz, használja a add_os_image metódust.

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)

Az elérhető operációsrendszer-lemezképek listázásához használja a list_os_images metódust. Tartalmazza az összes platformrendszerképet és felhasználói lemezképet.

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

Operációs rendszer lemezképének törlése

Felhasználói rendszerkép törléséhez használja a delete_os_image metódust.

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)

Virtuális gép létrehozása

Virtuális gép létrehozásához először létre kell hoznia egy felhőszolgáltatást. Ezután hozza létre a virtuális gép üzembe helyezését a create_virtual_machine_deployment metódussal.

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

Virtuális gép törlése

Egy virtuális gép törléséhez először törölje az üzembe helyezést a delete_deployment metódus használatával.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

A felhőszolgáltatás ezután a delete_hosted_service metódussal törölhető.

sms.delete_hosted_service(service_name='myvm')

Virtuális gép létrehozása rögzített virtuálisgép-rendszerképből

Virtuálisgép-rendszerkép rögzítéséhez először hívja meg a capture_vm_image metódust.

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
    )

A rendszerkép sikeres rögzítéséhez használja a list_vm_images API-t . Győződjön meg arról, hogy a kép megjelenik az eredmények között.

images = sms.list_vm_images()

Ha végre létre szeretné hozni a virtuális gépet a rögzített rendszerkép használatával, használja a create_virtual_machine_deployment metódust, mint korábban, de ezúttal a 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)

Ha többet szeretne megtudni arról, hogyan rögzíthet Linux rendszerű virtuális gépet a klasszikus üzemi modellben, olvassa el a Linux rendszerű virtuális gépek rögzítése című témakört.

Ha többet szeretne megtudni arról, hogyan rögzíthet windowsos virtuális gépet a klasszikus üzemi modellben, olvassa el a Windows rendszerű virtuális gépek rögzítése című témakört.

Következő lépések

Most, hogy megismerte a szolgáltatáskezelés alapjait, hozzáférhet az Azure Python SDK teljes API-referenciadokumentációjához, és összetett feladatokat hajthat végre egyszerűen a Python-alkalmazás kezeléséhez.

További információ: Python fejlesztői központban.