重要
Azure Lab Services は 2027 年 6 月 28 日に廃止されます。 詳細については、「提供終了ガイド」を参照してください。 移行を簡略化するために、Microsoft は Lab Services リソースのクリーンアップに役立つ自動化スクリプトを公開しています。これらは 、Azure Lab Services の提供終了スクリプト GitHub リポジトリで入手できます。
この記事では、Python と Azure Python ライブラリ (SDK) を使用してラボを作成する方法について説明します。 このラボでは、以前に作成したラボ プランの設定が使用されます。 Azure Lab Services の概要の詳細については、「Azure Lab Services とは」をご覧ください。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- ラボ作成者、所有者、共同作成者、ラボ サービス共同作成者といった Azure RBAC の役割など、ラボを管理するための権限を持つ Azure アカウント。 Azure Lab Services の組み込みロールと割り当てスコープの詳細を確認します。
- Azure ラボ プラン。 ラボ プランがまだない場合は、「クイックスタート: ラボを作成するためのリソースを設定する」の手順に従います。
ラボを作成する
ラボを作成する前に、ラボ プラン オブジェクトが必要です。
Python を使用してラボ プランを作成するでは、BellowsCollege_labplan という名前のリソース グループに BellowsCollege_rg という名前のラボ プランを作成する方法について説明しています。
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from datetime import timedelta
import time
from azure.identity import DefaultAzureCredential
from azure.mgmt.labservices import LabServicesClient
from azure.mgmt.resource import ResourceManagementClient
def main():
SUBSCRIPTION_ID = "<Subscription ID>"
TIME = str(time.time()).replace('.','')
GROUP_NAME = "BellowsCollege_rg"
LABPLAN = "BellowsCollege_labplan"
LAB = "BellowsCollege_lab"
LOCATION = 'southcentralus'
# Create clients
# # For other authentication approaches, please see: https://pypi.org/project/azure-identity/
resource_client = ResourceManagementClient(
credential=DefaultAzureCredential(),
subscription_id=SUBSCRIPTION_ID
)
labservices_client = LabServicesClient(
credential=DefaultAzureCredential(),
subscription_id=SUBSCRIPTION_ID
)
#Get single LabServices Lab Plan
labservices_labplan = labservices_client.lab_plans.get(GROUP_NAME, LABPLAN)
print("Get lab plans")
print(labservices_labplan)
#Get image information
LABIMAGES = labservices_client.images.list_by_lab_plan(GROUP_NAME,LABPLAN)
image = (list(filter(lambda x: (x.name == "microsoftwindowsdesktop.windows-11.win11-21h2-pro"), LABIMAGES)))
#Get lab quota
USAGEQUOTA = timedelta(hours=10)
# Password
CUSTOMPASSWORD = "<custom password>"
# Create LabServices Lab
LABBODY = {
"name": LAB,
"location" : LOCATION,
"properties" : {
"networkProfile": {},
"connectionProfile" : {
"webSshAccess" : "None",
"webRdpAccess" : "None",
"clientSshAccess" : "None",
"clientRdpAccess" : "Public"
},
"AutoShutdownProfile" : {
"shutdownOnDisconnect" : "Disabled",
"shutdownWhenNotConnected" : "Disabled",
"shutdownOnIdle" : "None"
},
"virtualMachineProfile" : {
"createOption" : "TemplateVM",
"imageReference" : {
"offer": image[0].offer,
"publisher": image[0].publisher,
"sku": image[0].sku,
"version": image[0].version
},
"sku" : {
"name" : "Classic_Fsv2_2_4GB_128_S_SSD",
"capacity" : 2
},
"additionalCapabilities" : {
"installGpuDrivers" : "Disabled"
},
"usageQuota" : USAGEQUOTA,
"UseSharedPassword" : "Enabled",
"adminUser" : {
"username" : "testuser",
"password" : CUSTOMPASSWORD
}
},
"securityProfile" : {
"openAccess" : "Disabled"
},
"rosterProfile" : {},
"labPlanId" : labservices_labplan.id,
"title" : "lab-python",
"description" : "lab 99 description updated"
}
}
poller = labservices_client.labs.begin_create_or_update(
GROUP_NAME,
LAB,
LABBODY
)
lab_result = poller.result()
print(f"Created Lab {lab_result.name}")
# Get LabServices Labs
labservices_lab = labservices_client.labs.get(GROUP_NAME,LAB)
print("Get lab:\n{}".format(labservices_lab))
if __name__ == "__main__":
main()
リソースをクリーンアップする
このアプリケーションを引き続き使用しない場合は、次の手順でグループとラボを削除します。
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from datetime import timedelta
import time
from azure.identity import DefaultAzureCredential
from azure.mgmt.labservices import LabServicesClient
from azure.mgmt.resource import ResourceManagementClient
# - other dependence -
# - end -
#
def main():
SUBSCRIPTION_ID = "<Subscription ID>"
TIME = str(time.time()).replace('.','')
GROUP_NAME = "BellowsCollege_rg"
LABPLAN = "BellowsCollege_labplan"
LAB = "BellowsCollege_lab"
LOCATION = 'southcentralus'
# Create clients
# # For other authentication approaches, please see: https://pypi.org/project/azure-identity/
resource_client = ResourceManagementClient(
credential=DefaultAzureCredential(),
subscription_id=SUBSCRIPTION_ID
)
labservices_client = LabServicesClient(
credential=DefaultAzureCredential(),
subscription_id=SUBSCRIPTION_ID
)
# Delete Lab
labservices_client.labs.begin_delete(
GROUP_NAME,
LAB
).result()
print("Deleted lab.\n")
# Delete Group
resource_client.resource_groups.begin_delete(
GROUP_NAME
).result()
if __name__ == "__main__":
main()
次の手順
管理者として、Azure PowerShell モジュールと Az.LabServices コマンドレットの詳細を確認できます。