Python용 Azure DevCenter Service 클라이언트 라이브러리 - 버전 1.0.0b3
Azure DevCenter 패키지는 Microsoft Dev Box 및 Azure 배포 환경에 대한 리소스를 관리할 수 있는 액세스를 제공합니다. 이 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, Project, Catalog 및 Environment Type을 구성 해야 합니다.
Azure Active Directory 자격 증명을 사용하여 만들기
AAD(Azure Active Directory) 토큰 자격 증명을 사용하려면 azure-identity 라이브러리에서 가져온 원하는 자격 증명 형식의 instance 제공합니다.
AAD를 사용하여 인증하려면 먼저 pip 설치를 수행해야 합니다. azure-identity
설치 후 azure.identity에서 사용할 자격 증명 유형을 선택할 수 있습니다. 예를 들어 DefaultAzureCredential을 사용하여 클라이언트를 인증할 수 있습니다.
AAD 애플리케이션의 클라이언트 ID, 테넌트 ID 및 클라이언트 암호 값을 환경 변수로 설정합니다. AZURE_CLIENT_ID
, , AZURE_TENANT_ID
AZURE_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()))
주요 개념
개발 상자는 Azure에서 실행되는 관리되는 개발자 머신을 참조합니다. Dev Box는 Dev Box에 사용되는 네트워크와 이미지를 정의하는 풀에 프로비전됩니다.
환경은 템플릿(카탈로그 항목) 및 매개 변수를 결합하는 템플릿이 적용된 개발자 환경을 나타냅니다.
문제 해결
오류는 초기 요청 및 장기 실행 작업 중에 발생할 수 있으며 오류를 resolve 방법에 대한 정보를 제공합니다. 풀 및 카탈로그와 같은 종속 리소스가 제대로 설정되고 정상 상태인지 확인해야 합니다. 종속 리소스가 실패 상태인 경우 패키지를 사용하여 리소스를 만들 수 없습니다.
다음 단계
샘플을 탐색하고 패키지를 사용하기 시작하여 시작하세요!
참여
이 프로젝트에 대한 기여와 제안을 환영합니다. 대부분의 경우 기여하려면 권한을 부여하며 실제로 기여를 사용할 권한을 당사에 부여한다고 선언하는 CLA(기여자 라이선스 계약)에 동의해야 합니다. 자세한 내용은 https://cla.microsoft.com 을 참조하세요.
끌어오기 요청을 제출하면 CLA-bot은 CLA를 제공하고 PR을 적절하게 데코레이팅해야 하는지 여부를 자동으로 결정합니다(예: 레이블, 설명). 봇에서 제공하는 지침을 따르기만 하면 됩니다. 이 작업은 CLA를 사용하여 모든 리포지토리에서 한 번만 수행하면 됩니다.
이 프로젝트에는 Microsoft Open Source Code of Conduct(Microsoft 오픈 소스 준수 사항)가 적용됩니다. 자세한 내용은 행동 강령 FAQ를 참조하거나 추가 질문이나 의견을 문의 opencode@microsoft.com 하세요.
Azure SDK for Python
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기