Share via


Azure DevCenter Service-Clientbibliothek für Python– Version 1.0.0b3

Das Azure DevCenter-Paket bietet Zugriff zum Verwalten von Ressourcen für Microsoft Dev Box und Azure-Bereitstellungsumgebungen. Dieses SDK ermöglicht die Verwaltung von Entwicklercomputern und -umgebungen in Azure.

Verwenden Sie das Paket für Azure DevCenter für Folgendes:

Erstellen, Zugreifen auf, Verwalten und Löschen von Dev Box-Ressourcen Erstellen, Bereitstellen, Verwalten und Löschen von Umgebungsressourcen

Erste Schritte

Installieren des Pakets

python -m pip install azure-developer-devcenter

Voraussetzungen

  • Für die Verwendung dieses Pakets ist Python 3.7 oder höher erforderlich.
  • Sie benötigen ein Azure-Abonnement , um dieses Paket verwenden zu können.
  • Sie müssen ein DevCenter, ein Projekt, eine Netzwerkverbindung, eine Dev Box-Definition und einen Pool konfiguriert haben, bevor Sie Dev Boxes erstellen können.
  • Sie müssen einen DevCenter-, Projekt-, Katalog- und Umgebungstyp konfiguriert haben, bevor Sie Umgebungen erstellen können.

Erstellen mit Azure Active Directory-Anmeldeinformationen

Um Azure Active Directory-Tokenanmeldeinformationen (AAD) zu verwenden, geben Sie eine instance des gewünschten Anmeldeinformationstyps an, der aus der azure-identity-Bibliothek abgerufen wird.

Um sich bei AAD zu authentifizieren, müssen Sie zuerst pip installieren. azure-identity

Nach dem Setup können Sie auswählen, welche Art von Anmeldeinformationen aus azure.identity verwendet werden soll. Beispielsweise kann DefaultAzureCredential verwendet werden, um den Client zu authentifizieren:

Legen Sie die Werte der Client-ID, der Mandanten-ID und des geheimen Clientschlüssels der AAD-Anwendung als Umgebungsvariablen fest: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET

Verwenden Sie die zurückgegebenen Tokenanmeldeinformationen, um den Client zu authentifizieren:

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

Beispiele

Dev Box Management

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

Umgebungsverwaltung

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

Wichtige Begriffe

Dev Boxes beziehen sich auf verwaltete Entwicklercomputer, die in Azure ausgeführt werden. Dev Boxes werden in Pools bereitgestellt, die das netzwerk- und image definieren, das für eine Dev Box verwendet wird.

Umgebungen beziehen sich auf vorlagenbasierte Entwicklerumgebungen, die eine Vorlage (Katalogelement) und Parameter kombinieren.

Problembehandlung

Fehler können bei anfänglichen Anforderungen und vorgängen mit langer Ausführungsdauer auftreten und informationen zum Beheben des Fehlers bereitstellen. Vergewissern Sie sich, dass abhängige Ressourcen, z. B. Pools und Kataloge, ordnungsgemäß eingerichtet sind und sich in einem fehlerfreien Zustand befinden. Sie können keine Ressourcen mit dem Paket erstellen, wenn sich ihre abhängigen Ressourcen in einem fehlerhaften Zustand befinden.

Nächste Schritte

Beginnen Sie, indem Sie unsere Beispiele erkunden und mit der Verwendung des Pakets beginnen!

Mitwirken

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.

Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den FAQ zum Verhaltenskodex, oder wenden Sie sich mit weiteren Fragen oder Kommentaren an opencode@microsoft.com.