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.exe
hozhat 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.