Python'dan hizmet yönetimini kullanma

Dikkat

Bu makalede, Kullanım Süresi Sonu (EOL) durumuna yakın bir Linux dağıtımı olan CentOS'a başvuruda bulunur. Lütfen kullanımınızı ve buna uygun planlamayı göz önünde bulundurun. Daha fazla bilgi için bkz . CentOS Kullanım Süresi Sonu kılavuzu.

Önemli

Cloud Services (klasik) artık yeni müşteriler için kullanımdan kaldırılmıştır ve tüm müşteriler için 31 Ağustos 2024'te kullanımdan kaldırılacaktır. Yeni dağıtımlarda yeni Azure Resource Manager tabanlı dağıtım modeli Azure Cloud Services (genişletilmiş destek) kullanılmalıdır.

Bu kılavuzda, Python'dan ortak hizmet yönetimi görevlerini program aracılığıyla nasıl gerçekleştirebileceğiniz gösterilmektedir. Python için Azure SDK'daki ServiceManagementService sınıfı, Azure portalında bulunan hizmet yönetimiyle ilgili işlevlerin çoğuna programlı erişimi destekler. Bulut hizmetlerini, dağıtımları, veri yönetimi hizmetlerini ve sanal makineleri oluşturmak, güncelleştirmek ve silmek için bu işlevi kullanabilirsiniz. Bu işlevsellik, hizmet yönetimine programlı erişim gerektiren uygulamalar oluştururken yararlı olabilir.

Hizmet yönetimi nedir?

Azure Hizmet Yönetimi API'si, Azure portalı aracılığıyla sağlanan hizmet yönetimi işlevlerinin çoğuna programlı erişim sağlar. Bulut hizmetlerinizi ve depolama hesaplarınızı yönetmek için Python için Azure SDK'yı kullanabilirsiniz.

Hizmet Yönetimi API'sini kullanmak için bir Azure hesabı oluşturmanız gerekir.

Kavram

Python için Azure SDK, REST API olan Service Management API'sini sarmalar. Tüm API işlemleri TLS üzerinden gerçekleştirilir ve X.509 v3 sertifikaları kullanılarak karşılıklı kimlik doğrulaması yapılır. Yönetim hizmetine Azure'da çalışan bir hizmetin içinden erişilebilir. Ayrıca https isteği gönderebilen ve HTTPS yanıtı alabilen herhangi bir uygulamadan doğrudan İnternet üzerinden de erişilebilir.

Yükleme

Bu makalede açıklanan tüm özellikler, pip kullanarak yükleyebileceğiniz pakette azure-servicemanagement-legacy mevcuttur. Yükleme hakkında daha fazla bilgi için (örneğin, Python'da yeniyseniz), bkz . Python ve Azure SDK'yı yükleme.

Hizmet yönetimine Bağlan

Hizmet yönetimi uç noktasına bağlanmak için Azure abonelik kimliğiniz ve geçerli bir yönetim sertifikanız olmalıdır. Abonelik kimliğinizi Azure portalından alabilirsiniz.

Not

Artık Windows üzerinde çalışırken OpenSSL ile oluşturulan sertifikaları kullanabilirsiniz. Python 2.7.4 veya üzeri gereklidir. .pfx sertifikaları için destek gelecekte kaldırılacağı için .pfx yerine OpenSSL kullanmanızı öneririz.

Windows/Mac/Linux'ta yönetim sertifikaları (OpenSSL)

Yönetim sertifikanızı oluşturmak için OpenSSL kullanabilirsiniz. Biri sunucu (dosya) ve biri istemci .pem (.cerdosya) için olmak üzere iki sertifika oluşturmanız gerekir. Dosyayı oluşturmak için şunu yürütür .pem :

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

Sertifikayı .cer oluşturmak için şunu yürütebilirsiniz:

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

Azure sertifikaları hakkında daha fazla bilgi için bkz . Azure Cloud Services sertifikalarına genel bakış. OpenSSL parametrelerinin tam açıklaması için adresinde https://www.openssl.org/docs/manmaster/man1/req.htmlbulunan belgelere bakın.

Bu dosyaları oluşturduktan sonra dosyayı Azure'a .cer yükleyin. Azure portalının Ayarlar sekmesinde Karşıya Yükle'yi seçin. Dosyayı nereye kaydettiğinizi .pem not edin.

Abonelik kimliğinizi aldıktan, bir sertifika oluşturduktan ve dosyayı Azure'a .cer yükledikten sonra Azure yönetim uç noktasına bağlanın. abonelik kimliğini ve dosyanın yolunu ServiceManagementService'e .pemgeçirerek Bağlan.

from azure import *
from azure.servicemanagement import *

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

sms = ServiceManagementService(subscription_id, certificate_path)

Yukarıdaki örnekte, sms bir ServiceManagementService nesnesidir. ServiceManagementService sınıfı, Azure hizmetlerini yönetmek için kullanılan birincil sınıftır.

Windows'ta yönetim sertifikaları (MakeCert)

kullanarak makecert.exemakinenizde otomatik olarak imzalanan bir yönetim sertifikası oluşturabilirsiniz. Yönetici olarak bir Visual Studio komut istemi açın ve AzureCertificate'i kullanmak istediğiniz sertifika adıyla değiştirerek aşağıdaki komutu kullanın:

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

komutu dosyayı oluşturur .cer ve Kişisel sertifika deposuna yükler. Daha fazla bilgi için bkz . Azure Cloud Services için sertifikalara genel bakış.

Sertifikayı oluşturduktan sonra dosyayı Azure'a .cer yükleyin. Azure portalının Ayarlar sekmesinde Karşıya Yükle'yi seçin.

Abonelik kimliğinizi aldıktan, bir sertifika oluşturduktan ve dosyayı Azure'a .cer yükledikten sonra Azure yönetim uç noktasına bağlanın. Bağlan abonelik kimliğini ve sertifikanın konumunuServiceManagementService'ekişisel sertifika deposu (azurecertificate yerine sertifikanızın adını yazın).

from azure import *
from azure.servicemanagement import *

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

sms = ServiceManagementService(subscription_id, certificate_path)

Yukarıdaki örnekte, sms bir ServiceManagementService nesnesidir. ServiceManagementService sınıfı, Azure hizmetlerini yönetmek için kullanılan birincil sınıftır.

Kullanılabilir konumları listeleme

Barındırma hizmetleri için kullanılabilir konumları listelemek için list_locations yöntemini kullanın.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Bulut hizmeti veya depolama hizmeti oluşturduğunuzda geçerli bir konum sağlamanız gerekir. list_locations yöntemi her zaman kullanılabilir konumların güncel bir listesini döndürür. Bu yazıdan itibaren kullanılabilir konumlar şunlardır:

  • West Europe
  • Kuzey Avrupa
  • Güneydoğu Asya
  • Doğu Asya
  • Orta ABD
  • Orta Kuzey ABD
  • Orta Güney ABD
  • Batı ABD
  • Doğu ABD
  • Doğu Japonya
  • Batı Japonya
  • Güney Brezilya
  • Doğu Avustralya
  • Güneydoğu Avustralya

Bulut hizmeti oluşturma

Bir uygulama oluşturup Azure'da çalıştırdığınızda kod ve yapılandırma birlikte Azure bulut hizmeti olarak adlandırılır. (Önceki Azure sürümlerinde barındırılan hizmet olarak biliniyordu.) Yeni bir barındırılan hizmet oluşturmak için create_hosted_service yöntemini kullanabilirsiniz. Barındırılan bir hizmet adı (Azure'da benzersiz olması gerekir), bir etiket (otomatik olarak base64 olarak kodlanmış), açıklama ve konum sağlayarak hizmeti oluşturun.

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)

aboneliğiniz için barındırılan tüm hizmetleri list_hosted_services yöntemiyle listeleyebilirsiniz.

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

Belirli bir barındırılan hizmet hakkında bilgi almak için barındırılan hizmet adını get_hosted_service_properties yöntemine geçirin.

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)

Bir bulut hizmeti oluşturduktan sonra kodunuzu create_deployment yöntemiyle hizmete dağıtın.

Bulut hizmetini silme

Hizmet adını delete_hosted_service yöntemine geçirerek bir bulut hizmetini silebilirsiniz.

sms.delete_hosted_service('myhostedservice')

Bir hizmeti silebilmeniz için önce hizmetin tüm dağıtımlarının silinmesi gerekir. Daha fazla bilgi için bkz . Dağıtımı silme.

Dağıtımı silme

Dağıtımı silmek için delete_deployment yöntemini kullanın. Aşağıdaki örnekte adlı v1bir dağıtımın nasıl silineceği gösterilmektedir:

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Depolama hizmeti oluşturma

Depolama hizmeti Azure bloblarına, tablolarına ve kuyruklarına erişmenizi sağlar. Depolama hizmeti oluşturmak için hizmet için bir ad (3 ila 24 küçük karakter arasında ve Azure içinde benzersiz) gerekir. Ayrıca açıklama, etiket (en fazla 100 karakter, otomatik olarak base64 olarak kodlanmış) ve bir konum gerekir. Aşağıdaki örnekte, bir konum belirterek depolama hizmeti oluşturma gösterilmektedir:

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)

Yukarıdaki örnekte, create_storage_account tarafından döndürülen sonuç get_operation_status yöntemine geçirilerek create_storage_account işleminindurumu alınabilir.

depolama hesaplarınızı ve bunların özelliklerini list_storage_accounts yöntemiyle listeleyebilirsiniz.

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

Depolama hizmetini silme

Depolama hizmetini silmek için depolama hizmeti adını delete_storage_account yöntemine geçirin. Depolama hizmetinin silinmesi, hizmette depolanan tüm verileri (bloblar, tablolar ve kuyruklar) siler.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

sms.delete_storage_account('mystorageaccount')

Kullanılabilir işletim sistemlerini listeleme

Barındırma hizmetleri için kullanılabilen işletim sistemlerini listelemek için list_operating_systems yöntemini kullanın.

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

Alternatif olarak, işletim sistemlerini aileye göre gruplandıran list_operating_system_families yöntemini kullanabilirsiniz.

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

İşletim sistemi görüntüsü oluşturma

Görüntü deposuna bir işletim sistemi görüntüsü eklemek için add_os_image yöntemini kullanın.

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)

Kullanılabilir işletim sistemi görüntülerini listelemek için list_os_images yöntemini kullanın. Tüm platform görüntülerini ve kullanıcı görüntülerini içerir.

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

İşletim sistemi görüntüsünü silme

Kullanıcı görüntüsünü silmek için delete_os_image yöntemini kullanın.

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)

Sanal makine oluşturma

Sanal makine oluşturmak için önce bir bulut hizmeti oluşturmanız gerekir. Ardından create_virtual_machine_deployment yöntemini kullanarak sanal makine dağıtımını oluşturun.

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

Sanal makineyi silme

Bir sanal makineyi silmek için önce delete_deployment yöntemini kullanarak dağıtımı silebilirsiniz.

from azure import *
from azure.servicemanagement import *

sms = ServiceManagementService(subscription_id, certificate_path)

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

Bulut hizmeti daha sonra delete_hosted_service yöntemi kullanılarak silinebilir.

sms.delete_hosted_service(service_name='myvm')

Yakalanan bir sanal makine görüntüsünden sanal makine oluşturma

Bir VM görüntüsü yakalamak için önce capture_vm_image yöntemini çağırırsınız.

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
    )

Görüntüyü başarıyla yakaladığından emin olmak için list_vm_images API'sini kullanın. Görüntünüzün sonuçlarda görüntülendiğinden emin olun.

images = sms.list_vm_images()

Son olarak yakalanan görüntüyü kullanarak sanal makineyi oluşturmak için create_virtual_machine_deployment yöntemini daha önce olduğu gibi kullanın, ancak bu kez bunun yerine vm_image_name geçin.

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)

Klasik dağıtım modelinde Linux sanal makinesi yakalama hakkında daha fazla bilgi edinmek için bkz . Linux sanal makinesi yakalama.

Klasik dağıtım modelinde Bir Windows sanal makinesini yakalama hakkında daha fazla bilgi edinmek için bkz . Windows sanal makinesi yakalama.

Sonraki adımlar

Hizmet yönetiminin temellerini öğrendiğinize göre, Azure Python SDK'sı için Complete API başvuru belgelerine erişebilir ve Python uygulamanızı yönetmek için karmaşık görevleri kolayca gerçekleştirebilirsiniz.

Daha fazla bilgi için bkz. Python Geliştirici Merkezi.