Servicebeheer gebruiken vanuit Python

Belangrijk

Cloud Services (klassiek) is nu afgeschaft voor nieuwe klanten en wordt op 31 augustus 2024 voor alle klanten buiten gebruik gesteld. Nieuwe implementaties moeten gebruikmaken van het nieuwe implementatiemodel op basis van Azure Resource Manager Azure Cloud Services (uitgebreide ondersteuning).

Deze handleiding laat zien hoe u programmatisch algemene servicebeheertaken uitvoert vanuit Python. De klasse ServiceManagementService in de Azure SDK voor Python ondersteunt programmatische toegang tot een groot deel van de servicebeheergerelateerde functionaliteit die beschikbaar is in de Azure Portal. U kunt deze functionaliteit gebruiken om cloudservices, implementaties, gegevensbeheerservices en virtuele machines te maken, bij te werken en te verwijderen. Deze functionaliteit kan handig zijn bij het bouwen van toepassingen die programmatische toegang tot servicebeheer nodig hebben.

Wat is servicebeheer?

De Azure Service Management-API biedt programmatische toegang tot een groot deel van de servicebeheerfunctionaliteit die beschikbaar is via de Azure Portal. U kunt de Azure SDK voor Python gebruiken om uw cloudservices en opslagaccounts te beheren.

Als u de Service Management-API wilt gebruiken, moet u een Azure-account maken.

Concepten

De Azure SDK voor Python verpakt de Service Management-API, een REST API. Alle API-bewerkingen worden uitgevoerd via TLS en wederzijds geverifieerd met behulp van X.509 v3-certificaten. De beheerservice kan worden geopend vanuit een service die wordt uitgevoerd in Azure. Het kan ook rechtstreeks via internet worden geopend vanuit elke toepassing die een HTTPS-aanvraag kan verzenden en een HTTPS-antwoord kan ontvangen.

Installatie

Alle functies die in dit artikel worden beschreven, zijn beschikbaar in het azure-servicemanagement-legacy pakket, dat u kunt installeren met behulp van pip. Zie Python en de Azure SDK installeren voor meer informatie over de installatie (bijvoorbeeld als Python nieuw voor u is).

Verbinding maken met servicebeheer

Als u verbinding wilt maken met het servicebeheereindpunt, hebt u uw Azure-abonnements-id en een geldig beheercertificaat nodig. U kunt uw abonnements-id verkrijgen via de Azure Portal.

Notitie

U kunt nu certificaten gebruiken die zijn gemaakt met OpenSSL wanneer deze worden uitgevoerd in Windows. Python 2.7.4 of hoger is vereist. U wordt aangeraden OpenSSL te gebruiken in plaats van .pfx, omdat de ondersteuning voor PFX-certificaten waarschijnlijk in de toekomst wordt verwijderd.

Beheercertificaten in Windows/Mac/Linux (OpenSSL)

U kunt OpenSSL gebruiken om uw beheercertificaat te maken. U moet twee certificaten maken, één voor de server (een .cer bestand) en één voor de client (een .pem bestand). Voer het volgende uit om het .pem bestand te maken:

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

Voer het volgende uit om het .cer certificaat te maken:

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

Zie Overzicht van certificaten voor Azure Cloud Services voor meer informatie over Azure-certificaten. Zie de documentatie op https://www.openssl.org/docs/apps/openssl.htmlvoor een volledige beschrijving van OpenSSL-parameters.

Nadat u deze bestanden hebt gemaakt, uploadt u het .cer bestand naar Azure. Selecteer in de Azure Portal op het tabblad Instellingen de optie Uploaden. Noteer waar u het .pem bestand hebt opgeslagen.

Nadat u uw abonnements-id hebt verkregen, maakt u een certificaat en uploadt u het .cer bestand naar Azure, maakt u verbinding met het Azure-beheereindpunt. Maak verbinding door de abonnements-id en het pad naar het .pem bestand door te geven aan 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)

In het voorgaande voorbeeld sms is een ServiceManagementService-object . De klasse ServiceManagementService is de primaire klasse die wordt gebruikt voor het beheren van Azure-services.

Beheercertificaten in Windows (MakeCert)

U kunt een zelfondertekend beheercertificaat op uw computer maken met behulp van makecert.exe. Open een Visual Studio-opdrachtprompt als beheerder en gebruik de volgende opdracht, waarbij u AzureCertificate vervangt door de certificaatnaam die u wilt gebruiken:

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

Met de opdracht wordt het .cer bestand gemaakt en geïnstalleerd in het persoonlijke certificaatarchief. Zie Overzicht van certificaten voor Azure Cloud Services voor meer informatie.

Nadat u het certificaat hebt gemaakt, uploadt u het .cer bestand naar Azure. Selecteer in de Azure Portal op het tabblad Instellingen de optie Uploaden.

Nadat u uw abonnements-id hebt verkregen, maakt u een certificaat en uploadt u het .cer bestand naar Azure, maakt u verbinding met het Azure-beheereindpunt. Maak verbinding door de abonnements-id en de locatie van het certificaat in uw persoonlijke certificaatarchief door te geven aan ServiceManagementService (vervang opnieuw AzureCertificate door de naam van uw certificaat).

from azure import *
from azure.servicemanagement import *

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

sms = ServiceManagementService(subscription_id, certificate_path)

In het voorgaande voorbeeld sms is een ServiceManagementService-object . De klasse ServiceManagementService is de primaire klasse die wordt gebruikt voor het beheren van Azure-services.

Beschikbare locaties weergeven

Gebruik de methode list_locations om de locaties weer te geven die beschikbaar zijn voor het hosten van services.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Wanneer u een cloudservice of opslagservice maakt, moet u een geldige locatie opgeven. De methode list_locations retourneert altijd een bijgewerkte lijst met de momenteel beschikbare locaties. Vanaf dit schrijven zijn de beschikbare locaties:

  • Europa -west
  • Europa - noord
  • Azië - zuidoost
  • Azië - oost
  • VS - centraal
  • VS - noord-centraal
  • VS - zuid-centraal
  • VS - west
  • VS - oost
  • Japan - oost
  • Japan - west
  • Brazilië - zuid
  • Australië - oost
  • Australië - zuidoost

Een cloudservice maken

Wanneer u een toepassing maakt en uitvoert in Azure, worden de code en configuratie samen een Azure-cloudservice genoemd. (Deze stond in eerdere Azure-releases bekend als een gehoste service .) U kunt de methode create_hosted_service gebruiken om een nieuwe gehoste service te maken. Maak de service door een gehoste servicenaam op te geven (die uniek moet zijn in Azure), een label (automatisch gecodeerd naar base64), een beschrijving en een locatie.

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)

U kunt alle gehoste services voor uw abonnement weergeven met de methode 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('')

Als u informatie wilt over een bepaalde gehoste service, geeft u de naam van de gehoste service door aan de methode 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)

Nadat u een cloudservice hebt gemaakt, implementeert u uw code in de service met de methode create_deployment .

Een cloudservice verwijderen

U kunt een cloudservice verwijderen door de servicenaam door te geven aan de methode delete_hosted_service .

sms.delete_hosted_service('myhostedservice')

Voordat u een service kunt verwijderen, moeten alle implementaties voor de service eerst worden verwijderd. Zie Een implementatie verwijderen voor meer informatie.

Een implementatie verwijderen

Als u een implementatie wilt verwijderen, gebruikt u de methode delete_deployment . In het volgende voorbeeld ziet u hoe u een implementatie met de naam v1verwijdert:

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Een opslagservice maken

Een opslagservice biedt u toegang tot Azure-blobs, tabellen en wachtrijen. Als u een opslagservice wilt maken, hebt u een naam voor de service nodig (tussen 3 en 24 kleine letters en uniek binnen Azure). U hebt ook een beschrijving, een label (maximaal 100 tekens, automatisch gecodeerd naar base64) en een locatie nodig. In het volgende voorbeeld ziet u hoe u een opslagservice maakt door een locatie op te geven:

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)

In het voorgaande voorbeeld kan de status van de create_storage_account-bewerking worden opgehaald door het resultaat dat door create_storage_account is geretourneerd, door te geven aan de methode get_operation_status .

U kunt uw opslagaccounts en hun eigenschappen weergeven met de methode 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('')

Een opslagservice verwijderen

Als u een opslagservice wilt verwijderen, geeft u de naam van de opslagservice door aan de methode delete_storage_account . Als u een opslagservice verwijdert, worden alle gegevens verwijderd die zijn opgeslagen in de service (blobs, tabellen en wachtrijen).

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

sms.delete_storage_account('mystorageaccount')

Beschikbare besturingssystemen weergeven

Gebruik de methode list_operating_systems om de besturingssystemen weer te geven die beschikbaar zijn voor het hosten van services.

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

U kunt ook de methode list_operating_system_families gebruiken, waarmee de besturingssystemen worden gegroepeerd op familie.

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

Een installatiekopieën van een besturingssysteem maken

Als u een installatiekopieën van een besturingssysteem wilt toevoegen aan de opslagplaats met installatiekopieën, gebruikt u de methode 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)

Gebruik de methode list_os_images om de beschikbare installatiekopieën van het besturingssysteem weer te geven. Het omvat alle platforminstallatiekopieën en gebruikersafbeeldingen.

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

Een installatiekopieën van een besturingssysteem verwijderen

Als u een gebruikersafbeelding wilt verwijderen, gebruikt u de methode 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)

Een virtuele machine maken

Als u een virtuele machine wilt maken, moet u eerst een cloudservice maken. Maak vervolgens de implementatie van de virtuele machine met behulp van de methode 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')

Een virtuele machine verwijderen

Als u een virtuele machine wilt verwijderen, verwijdert u eerst de implementatie met behulp van de methode delete_deployment .

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

De cloudservice kan vervolgens worden verwijderd met behulp van de methode delete_hosted_service .

sms.delete_hosted_service(service_name='myvm')

Een virtuele machine maken van een vastgelegde installatiekopieën van een virtuele machine

Als u een VM-installatiekopieën wilt vastleggen, roept u eerst de methode capture_vm_image aan.

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
    )

Gebruik de list_vm_images-API om ervoor te zorgen dat u de installatiekopieën hebt vastgelegd. Zorg ervoor dat uw afbeelding wordt weergegeven in de resultaten.

images = sms.list_vm_images()

Als u ten slotte de virtuele machine wilt maken met behulp van de vastgelegde installatiekopieën, gebruikt u de methode create_virtual_machine_deployment zoals voorheen, maar deze tijd gaat in plaats daarvan in de 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)

Zie Een virtuele Linux-machine vastleggen voor meer informatie over het vastleggen van een virtuele Linux-machine in het klassieke implementatiemodel.

Zie Een virtuele Windows-machine vastleggen voor meer informatie over het vastleggen van een virtuele Windows-machine in het klassieke implementatiemodel.

Volgende stappen

Nu u de basisbeginselen van servicebeheer hebt geleerd, hebt u toegang tot de volledige API-referentiedocumentatie voor de Azure Python SDK en kunt u eenvoudig complexe taken uitvoeren om uw Python-toepassing te beheren.

Raadpleeg het Python Developer Center voor meer informatie.