快速入门:使用 Azure CLI 创建托管 DevOps 池
本文介绍如何使用 Azure CLI 创建托管 DevOps 池,以及如何在其中运行管道。
先决条件
在完成本文中的步骤之前,请根据 先决条件 一文中描述的方法,配置您的 Azure 订阅和 Azure DevOps 组织,以便与托管 DevOps 资源池一起使用。 每个 Azure 订阅和 Azure DevOps 组织只需完成一次这些步骤。
在 Azure Cloud Shell 中安装或运行
了解如何使用 Azure CLI 的最简单方法是通过浏览器在 Azure Cloud Shell 中运行 Bash 环境。 若要了解 Cloud Shell,请参阅 Azure Cloud Shell 中的 Bash 快速入门。
准备好安装 Azure CLI 后,请参阅 Windows、Linux、macOS 和 Docker 容器的安装说明 。
通过运行 az --version
来检查版本。 Azure Cloud Shell 始终预安装了最新版本的 Azure CLI。
az version
登录 Azure CLI
打开命令提示符(在 Windows 上,使用 Windows 命令提示符或 PowerShell),并运行以下命令。 如果使用 Azure Cloud Shell ,则无需运行 az login
,除非要使用其他帐户。
登录到 Azure CLI。
az login
如果有多个 Azure 订阅,请设置默认的 Azure 订阅。
az account set --subscription "My subscription name"
若要获取订阅列表,可以运行以下命令。
az account list -o table
如果有多个租户,或者想要详细了解如何使用 Azure CLI 使用 Azure 订阅,请参阅 如何使用 Azure CLI 管理 Azure 订阅。
定义环境变量
运行以下命令以生成本快速入门中资源的名称。 此示例使用
EastUS2
该区域。 替换为EastUS2
所需的区域。export RANDOM_ID="$(openssl rand -hex 3)" export RESOURCE_GROUP_NAME="myManagedDevOpsPoolGroup$RANDOM_ID" export REGION=EastUS2 export POOL_NAME="mdpPool$RANDOM_ID" export DEV_CENTER_NAME="mdpDevCenter$RANDOM_ID" export DEV_CENTER_PROJECT_NAME="mdpDevCenterProject$RANDOM_ID"
运行以下命令以查看资源名称。
echo $RESOURCE_GROUP_NAME echo $POOL_NAME echo $DEV_CENTER_NAME echo $DEV_CENTER_PROJECT_NAME echo $REGION
创建资源组
运行以下命令,创建资源组以包含本快速入门中使用的资源。
az group create --name $RESOURCE_GROUP_NAME --location $REGION
创建开发人员中心和开发人员中心项目
安装 Azure CLI
devcenter
扩展,并确保它已升级到最新版本(如果已安装)。az extension add --name devcenter --upgrade
运行以下命令以创建开发人员中心和开发人员中心项目。
# Create a dev center az devcenter admin devcenter create -n $DEV_CENTER_NAME \ -g $RESOURCE_GROUP_NAME \ -l $REGION # Save the id of the newly created dev center DEVCID=$( \ az devcenter admin devcenter show -n $DEV_CENTER_NAME \ -g $RESOURCE_GROUP_NAME \ --query id -o tsv) # Create a dev center project az devcenter admin project create -n $DEV_CENTER_PROJECT_NAME \ --description "My dev center project." \ -g $RESOURCE_GROUP_NAME \ -l $REGION \ --dev-center-id $DEVCID # Save the dev center project for use when creating # the Managed DevOps Pool DEVCPID=$( \ az devcenter admin project show -n $DEV_CENTER_PROJECT_NAME \ -g $RESOURCE_GROUP_NAME \ --query id -o tsv)
片刻后,输出指示已创建开发人员中心。 创建的
id
开发人员中心已保存到DEVCID
其中,用于创建开发人员中心项目。{ "devCenterUri": "https://...", "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/resourceGroupName/providers/Microsoft.DevCenter/devcenters/devCenterName", "location": "eastus", "name": "devCenterName", "provisioningState": "Succeeded", "resourceGroup": "resourceGroupName", "systemData": { ... }, "type": "microsoft.devcenter/devcenters" }
再过一会儿,输出将指示已创建开发人员中心项目。
id
创建的开发人员中心项目的保存位置DEVCPID
,并在下一部分创建托管 DevOps 池时使用。{ "description": "My dev center project.", "devCenterId": "...", "devCenterUri": "https://...", "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/resourceGroupName/providers/Microsoft.DevCenter/projects/devCenterProjectName", "location": "eastus", "name": "devCenterProjectName", "provisioningState": "Succeeded", "resourceGroup": "resourceGroupName", "systemData": { ... }, "type": "microsoft.devcenter/projects" }
准备托管 DevOps 池配置文件
该方法 mdp pool create
具有多个参数,这些参数采用 JSON 值来配置池的不同方面。
agent-profile
指定池是有状态还是无状态,并且包含备用代理计划。 它是一个字典,其名称Stateful
为单个键,具体取决于Stateless
所需的代理配置。 有关属性的详细信息agent-profile
,请参阅 “配置缩放”。fabric-profile
指定代理大小、VM 映像、OS 磁盘和附加存储。 有关属性的详细信息,请参阅fabric-profile
”和“配置其他存储”。organization-profile
指定可以使用池的 Azure DevOps 组织和项目。 有关设置的详细信息organization-profile
,请参阅 “配置安全设置 - 配置组织访问权限”。
创建以下三个文件,并将其保存到计划运行 Azure CLI 命令以创建池的文件夹。
使用以下内容创建文件名 agent-profile.json 。
{ "Stateless": {} }
此配置指定 池的无状态代理 。
创建包含以下内容的名为 fabric-profile.json 的文件。
{ "vmss": { "sku": { "name": "Standard_D2as_v5" }, "images": [ { "aliases": [ "ubuntu-22.04" ], "buffer": "*", "wellKnownImageName": "ubuntu-22.04/latest" } ], "osProfile": { "secretsManagementSettings": { "observedCertificates": [], "keyExportable": false }, "logonType": "Service" }, "storageProfile": { "osDiskStorageAccountType": "Standard", "dataDisks": [] } } }
此配置使用Standard_D2as_v5映像、ubuntu-22.04 Azure Pipelines 映像和没有附加数据磁盘的标准OS 磁盘类型指定池。
创建包含以下内容的名为 organization-profile.json 的文件。 替换为
<organization-name>
Azure DevOps 组织的名称。{ "AzureDevOps": { "organizations": [ { "url": "https://dev.azure.com/<organization-name>", "projects": [], "parallelism": 1 } ], "permissionProfile": { "kind": "CreatorOnly" } } }
此配置指定可用于 Azure DevOps 组织中所有项目的池。
创建托管 DevOps 池
mdp
安装扩展,并确保它已升级到最新版本(如果已安装)。az extension add --name mdp --upgrade
通过运行以下 az mdp pool create 命令创建托管 DevOps 池。
az mdp pool create -n $POOL_NAME \ -g $RESOURCE_GROUP_NAME \ -l $REGION \ --devcenter-project-id $DEVCPID \ --maximum-concurrency 1 \ --agent-profile agent-profile.json \ --fabric-profile fabric-profile.json \ --organization-profile organization-profile.json
如果订阅没有容量使用所需的 Azure VM SKU 和最大代理计数配置池,则池创建失败,并出现类似于以下消息的错误。
Cores needed to complete this request is 2, which exceeds the current limit of 0 for SKU family standardDDSv4Family in region eastus. Please choose a different region if possible, or request additional quota at https://portal.azure.com/#view/Microsoft_Azure_Support/NewSupportRequestV3Blade/issueType/quota/subscriptionId/subscription_id_placeholder/topicId/3eadc5d3-b59a-3658-d8c6-9c729ba35b97
。 要解决该问题,请参阅查看托管 DevOps 池配额。
在Azure 门户中查看创建的池
登录到 Azure 门户。
搜索 托管 DevOps 池 ,并从可用选项中选择它。
从列表中选择新的托管 DevOps 池。
选择 JSON 视图 以查看托管 DevOps 池资源的 JSON 格式。
在 Azure DevOps 中查看代理池
转到 Azure DevOps 门户并登录到 Azure DevOps 组织(
https://dev.azure.com/{your-organization}
)。转到 Azure DevOps>组织设置。
转到 Pipelines>代理池,并验证新池是否已列出。 如果刚刚创建了托管 DevOps 池,则新池可能需要一些时间才会显示在代理列表中。
在新池中运行管道
在此步骤中,我们将在 Azure DevOps 项目的默认存储库中创建一个简单的管道,并在新的托管 DevOps 池中运行它。
转到 Azure DevOps 门户并登录到 Azure DevOps 组织(
https://dev.azure.com/{your-organization}
)。转到要在其中运行管道的项目,然后选择“管道”。
选择“新建管道”(或“创建管道”(如果这是第一个管道)。
选择 Azure Repos Git。
选择与项目同名的存储库。 在此示例中,该项目名为 FabrikamFiber,因此我们选择具有相同名称的存储库。
选择“初学者”管道。
默认情况下,初学者模板使用Microsoft托管的 Linux 代理。 编辑管道模板并更改
pool
分区,使其引用在前面的步骤中创建的池。# Change these two lines as shown in the following example. pool: vmImage: ubuntu-latest
在此示例中,将命名
fabrikam-managed-pool
托管 DevOps 池,因此请替换为vmImage: ubuntu-latest
name: fabrikam-managed-pools
托管 DevOps 池,并指定托管 DevOps 池的名称。# Replace fabrikam-managed-pools with the name # of your Managed DevOps Pool. pool: name: fabrikam-managed-pool
选择“ 保存并运行”,然后选择“ 保存”并再次运行 以确认。
如果这是此池中的第一个管道运行,则可能需要在管道运行之前授予权限。
观看 Azure DevOps 中的管道运行,你可以切换到Azure 门户并在“代理”视图中查看正在运行的代理。
清理资源
如果不打算继续使用此应用程序,请删除资源组、开发人员中心、开发人员中心项目和托管 DevOps 池。 本快速入门创建了新资源组中的所有资源,因此可以使用 az group delete 命令将其全部删除,以删除资源组及其所有资源。
az group delete -n $RESOURCE_GROUP_NAME