Aracılığıyla paylaş


Python için Azure DevCenter Service istemci kitaplığı - sürüm 1.0.0b3

Azure DevCenter paketi, Microsoft Dev Box ve Azure Dağıtım Ortamları için kaynakları yönetme erişimi sağlar. Bu SDK, Azure'da geliştirici makinelerini ve ortamlarını yönetmeye olanak tanır.

Azure DevCenter paketini kullanarak:

Dev Box kaynaklarını oluşturma, erişme, yönetme ve silme Ortam kaynaklarını oluşturma, dağıtma, yönetme ve silme

Başlarken

Paketi yükleme

python -m pip install azure-developer-devcenter

Önkoşullar

  • Bu paketi kullanmak için Python 3.7 veya üzeri gereklidir.
  • Bu paketi kullanmak için bir Azure aboneliğine ihtiyacınız vardır.
  • Geliştirme Kutuları oluşturabilmeniz için önce Bir DevCenter, Project, Ağ Bağlantısı, Geliştirme Kutusu Tanımı ve Havuzu yapılandırmış olmanız gerekir
  • Ortamlar oluşturabilmeniz için önce Bir DevCenter, Proje, Katalog ve Ortam Türü yapılandırmış olmanız gerekir

Azure Active Directory Kimlik Bilgileri ile oluşturma

Azure Active Directory (AAD) belirteci kimlik bilgilerini kullanmak için azure-identity kitaplığından alınan istenen kimlik bilgisi türünün bir örneğini sağlayın.

AAD ile kimlik doğrulaması yapmak için önce pip yüklemeniz gerekir azure-identity

Kurulumdan sonra azure.identity'den hangi kimlik bilgisi türünü kullanacağınızı seçebilirsiniz. Örneğin, istemcinin kimliğini doğrulamak için DefaultAzureCredential kullanılabilir:

AAD uygulamasının istemci kimliği, kiracı kimliği ve istemci gizli dizisi değerlerini ortam değişkenleri olarak ayarlayın: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET

İstemcinin kimliğini doğrulamak için döndürülen belirteç kimlik bilgilerini kullanın:

>>> import os
>>> from azure.developer.devcenter import DevCenterClient
>>> from azure.identity import DefaultAzureCredential
>>> tenant_id = os.environ['AZURE_TENANT_ID']
>>> endpoint = os.environ["DEVCENTER_ENDPOINT"]
>>> client = DevCenterClient(endpoint, credential=DefaultAzureCredential())

Örnekler

Geliştirme Kutusu Yönetimi

>>> import os
>>> from azure.developer.devcenter import DevCenterClient
>>> from azure.identity import DefaultAzureCredential
>>> from azure.core.exceptions import HttpResponseError
>>> tenant_id = os.environ['AZURE_TENANT_ID']
>>> endpoint = os.environ["DEVCENTER_ENDPOINT"]
>>> client = DevCenterClient(endpoint, credential=DefaultAzureCredential())
>>> try:
        # Fetch control plane resource dependencies
        projects = list(client.list_projects(top=1))
        target_project_name = projects[0]['name']

        pools = list(client.list_pools(target_project_name, top=1))
        target_pool_name = pools[0]['name']

        # Stand up a new dev box
        create_response = client.begin_create_dev_box(target_project_name, "me","Test_DevBox", {"poolName": target_pool_name})
        devbox_result = create_response.result()

        LOG.info(f"Provisioned dev box with status {devbox_result['provisioningState']}.")

        # Connect to the provisioned dev box
        remote_connection_response = client.get_remote_connection(target_project_name, "me", "Test_DevBox")
        LOG.info(f"Connect to the dev box using web URL {remote_connection_response['webUrl']}")

        # Tear down the dev box when finished
        delete_response = client.begin_delete_dev_box(target_project_name, "me", "Test_DevBox")
        delete_response.wait()
        LOG.info("Deleted dev box successfully.")
    except HttpResponseError as e:
        print('service responds error: {}'.format(e.response.json()))

Ortam Yönetimi

>>> import os
>>> from azure.developer.devcenter import DevCenterClient
>>> from azure.identity import DefaultAzureCredential
>>> from azure.core.exceptions import HttpResponseError
>>> tenant_id = os.environ['AZURE_TENANT_ID']
>>> endpoint = os.environ["DEVCENTER_ENDPOINT"]
>>> client = DevCenterClient(endpoint, credential=DefaultAzureCredential())
>>> try:
        # Fetch control plane resource dependencies
        target_project_name = list(client.list_projects(top=1))[0]['name']
        target_catalog_item_name = list(client.list_catalog_items(target_project_name, top=1))[0]['name']
        target_environment_type_name = list(client.list_environment_types(target_project_name, top=1))[0]['name']
        target_catalog_name = list(client.list_catalog_items(target_project_name, top=1))[0]['catalogName']

        # Stand up a new environment
        create_response = client.begin_create_or_update_environment(target_project_name,
                                                           "Dev_Environment",
                                                           {"catalogName": target_catalog_name,
                                                            "catalogItemName": target_catalog_item_name,
                                                            "environmentType": target_environment_type_name
                                                            })     
        
        environment_result = create_response.result()

        LOG.info(f"Provisioned environment with status {environment_result['provisioningState']}.")

        # Fetch deployment artifacts
        environment = client.get_environment_by_user(target_project_name, "me", "Dev_Environment")
        LOG.info(environment)

        # Tear down the environment when finished
        delete_response = client.begin_delete_environment(target_project_name, "me", "Dev_Environment")
        delete_response.wait()
        LOG.info("Completed deletion for the environment.")
    except HttpResponseError as e:
        print('service responds error: {}'.format(e.response.json()))

Önemli kavramlar

Geliştirme Kutuları, Azure'da çalışan yönetilen geliştirici makinelerine başvurur. Geliştirme Kutuları, Bir Geliştirme Kutusu için kullanılan ağı ve görüntüyü tanımlayan Havuzlar'da sağlanır.

Ortamlar, şablon (Katalog Öğesi) ve parametreleri birleştiren şablonlu geliştirici ortamlarına başvurur.

Sorun giderme

İlk istekler ve uzun süre çalışan işlemler sırasında hatalar oluşabilir ve hatanın nasıl çözüleceği hakkında bilgi sağlar. Havuzlar ve kataloglar gibi bağımlı kaynakların düzgün ayarlandığından ve iyi durumda olduğundan emin olun. Bağımlı kaynaklarınız başarısız durumda olduğunda paketle kaynak oluşturamazsınız.

Sonraki adımlar

Örneklerimizi inceleyerek ve paketi kullanmaya başlayarak başlayın!

Katkıda bulunma

Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için bkz. https://cla.microsoft.com.

Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.

Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları hakkında SSS bölümüne bakın veya başka soru ya da görüşleriniz olursa opencode@microsoft.com ile iletişime geçin.