Servicebeheer gebruiken vanuit Python

Let op

In dit artikel wordt verwezen naar CentOS, een Linux-distributie die de status End Of Life (EOL) nadert. Overweeg uw gebruik en planning dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

Belangrijk

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

Deze handleiding laat zien hoe u programmatisch algemene servicebeheertaken uitvoert vanuit Python. De ServiceManagementService-klasse in de Azure SDK voor Python ondersteunt programmatische toegang tot een groot deel van de functionaliteit voor servicebeheer die beschikbaar is in Azure Portal. U kunt deze functionaliteit gebruiken om cloudservices, implementaties, services voor gegevensbeheer en virtuele machines te maken, bij te werken en te verwijderen. Deze functionaliteit kan nuttig 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 functionaliteit voor servicebeheer die beschikbaar is via 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 worden 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 u niet eerder met Python werkt).

Verbinding maken naar 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 Azure Portal.

Notitie

U kunt nu certificaten gebruiken die zijn gemaakt met OpenSSL wanneer u windows gebruikt. Python 2.7.4 of hoger is vereist. U wordt aangeraden OpenSSL te gebruiken in plaats van PFX, omdat de ondersteuning voor PFX-certificaten in de toekomst waarschijnlijk 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 Het overzicht certificaten voor Azure Cloud Services voor meer informatie over Azure-certificaten. Voor een volledige beschrijving van OpenSSL-parameters raadpleegt u de documentatie op https://www.openssl.org/docs/manmaster/man1/req.html.

Nadat u deze bestanden hebt gemaakt, uploadt u het .cer bestand naar Azure. Selecteer Uploaden in Azure Portal op het tabblad Instellingen. Let op 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. Verbinding maken 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 dit 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 maakt u het .cer bestand en installeert u het in het persoonlijke certificaatarchief. Zie Het overzicht van certificaten voor Azure Cloud Services voor meer informatie.

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

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. Verbinding maken door de abonnements-id en de locatie van het certificaat in uw Persoonlijk certificaatarchief naar ServiceManagementService (vervang AzureCertificate opnieuw 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 dit een ServiceManagementService-object . De klasse ServiceManagementService is de primaire klasse die wordt gebruikt voor het beheren van Azure-services.

Beschikbare locaties weergeven

Als u de locaties wilt weergeven die beschikbaar zijn voor hostingservices, gebruikt u de methode 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)

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

  • Europa -west
  • Europa - noord
  • Azië - zuidoost
  • Azië - oost
  • Central US
  • 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. (Het werd een gehoste service genoemd in eerdere Versies van Azure.) 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 get_hosted_service_properties-methode .

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 create_deployment methode.

Een cloudservice verwijderen

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

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 verwijdert met de naam v1:

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 nodig voor de service (tussen 3 en 24 kleine letters en uniek in 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 wordt 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 delete_storage_account methode. 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

Als u de besturingssystemen wilt weergeven die beschikbaar zijn voor hostingservices, gebruikt u de methode 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))

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

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

Als u de beschikbare installatiekopieën van het besturingssysteem wilt weergeven, gebruikt u de methode list_os_images . Het bevat 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 op basis 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 de virtuele machine ten slotte wilt maken met behulp van de vastgelegde installatiekopieën, gebruikt u de methode create_virtual_machine_deployment zoals eerder, maar geeft u deze keer de vm_image_name door.

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 in het klassieke implementatiemodel voor meer informatie over het vastleggen van een virtuele Windows-machine.

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.