次の方法で共有


Python 用 Azure DevCenter Service クライアント ライブラリ - バージョン 1.0.0b3

Azure DevCenter パッケージは、Microsoft Dev Box と Azure Deployment Environments のリソースを管理するためのアクセスを提供します。 この SDK を使用すると、Azure で開発者のマシンと環境を管理できます。

Azure DevCenter のパッケージを使用して、次の作業を行います。

Dev Box リソースの作成、アクセス、管理、削除 環境リソースの作成、デプロイ、管理、削除

作業の開始

パッケージのインストール

python -m pip install azure-developer-devcenter

前提条件

  • このパッケージを使用するには、Python 3.7 以降が必要です。
  • このパッケージを使用するには 、Azure サブスクリプション が必要です。
  • Dev Box を作成するには、DevCenter、Project、Network Connection、Dev Box Definition、および Pool を 構成 しておく必要があります
  • 環境を作成するには、DevCenter、プロジェクト、カタログ、環境の種類を 構成 しておく必要があります

Azure Active Directory 資格情報を使用して作成する

Azure Active Directory (AAD) トークン資格情報を使用するには、azure-identity ライブラリから取得した目的の資格情報の種類のインスタンスを指定します。

AAD で認証するには、最初に pip をインストールする必要があります azure-identity

セットアップ後、使用する azure.identity から 資格情報 の種類を選択できます。 たとえば、 DefaultAzureCredential を使用してクライアントを認証できます。

AAD アプリケーションのクライアント ID、テナント ID、およびクライアント シークレットの値を環境変数として設定します。 AZURE_CLIENT_IDAZURE_TENANT_IDAZURE_CLIENT_SECRET

返されたトークン資格情報を使用してクライアントを認証します。

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

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

環境管理

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

主要な概念

Dev Boxes は、Azure で実行されているマネージド開発者マシンを指します。 開発ボックスは、Dev Box に使用されるネットワークとイメージを定義するプールでプロビジョニングされます。

環境は、テンプレート (カタログ アイテム) とパラメーターを組み合わせたテンプレート化された開発者環境を参照します。

トラブルシューティング

エラーは、最初の要求や実行時間の長い操作中に発生する可能性があり、エラーを解決する方法に関する情報を提供します。 プールやカタログなどの依存リソースが正しく設定され、正常な状態になっていることを確認してください。 依存リソースが失敗状態の場合、パッケージを使用してリソースを作成することはできません。

次のステップ

サンプルを確認し、パッケージの使用を開始することから始めましょう。

共同作成

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、 https://cla.microsoft.com を参照してください。

pull request を送信すると、CLA を提供して PR (ラベル、コメントなど) を適宜装飾する必要があるかどうかを CLA ボットが自動的に決定します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳細については、「倫理規定の FAQ」をご覧ください。追加の質問やコメントがある場合は opencode@microsoft.com にお問い合わせください。