受控DevOps集區提供數個選項供您選擇虛擬機映射,以在集區中執行管線。 您可以使用選取的 Azure Marketplace VM 映射建立集區、使用您自己的自定義 Azure 計算資源庫映像,或使用與 Azure Pipelines 相同的映像Microsoft裝載的代理程式。
受控DevOps集區可以使用單一映像或多個映像進行設定。 當您的集區有多個映射時,您的管線會指定他們想要使用 別名執行的映像。
選擇集區的映像
當您建立受控 DevOps 集區時,會選取預設映射。 您可以保留預設選項,或在集區建立期間加以變更。 若要在建立集區之後設定映像,請移至 [設定>集區],選擇 [從映像庫新增],然後為您的集區選取一或多個映像。
映像是在 fabricProfile
Managed DevOps Pools資源屬性的 區段中設定。
下列範例會指定三個影像。 如需映像架構的詳細資訊,請參閱本文中的下列各節。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"location": "eastus",
"properties": {
...
"fabricProfile": {
...
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/0001-com-ubuntu-server-focal/skus/20_04-lts-gen2/versions/latest",
"aliases": [
"ubuntu-20.04-gen2"
]
},
{
"wellKnownImageName": "windows-2022"
},
{
"wellKnownImageName": "ubuntu-22.04"
}
]
}
}
}
]
}
每個影像都可以有下列屬性。
屬性 |
說明 |
aliases |
別名的選擇性清單。 然後,您可以使用別名來參考映像,而不是映像的完整資源標識碼。 |
resourceID |
要使用的映像資源標識碼。 使用 Azure 計算資源庫映像 或 選取的市集映射時需要。 |
wellKnownImageName |
Azure Pipelines 映射的別名。 使用 Azure Pipelines 映射時需要。 |
buffer |
啟用待命代理程式時,buffer 指定要配置給此映像的待命代理程式百分比。 所有影像 buffer 值的總計必須等於100。 |
下列範例會定義三個影像。 已啟用待命代理程式,其中100%的待命代理程式配置給 windows-2022
映像。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/0001-com-ubuntu-server-focal/skus/20_04-lts-gen2/versions/latest",
"aliases": [
"ubuntu-20.04-gen2"
],
"buffer": "0"
},
{
"buffer": "100",
"wellKnownImageName": "windows-2022"
},
{
"buffer": "0",
"wellKnownImageName": "ubuntu-22.04"
}
]
映像是在 fabric-profile
Managed DevOps Pools資源屬性的 區段中設定。
az mdp pool create \
--fabric-profile fabric-profile.json
# other parameters omitted for space
下列範例顯示 images
fabric-profile.json 檔案的 區段,並指定三個影像。 如需映像架構的詳細資訊,請參閱本文中的下列各節。
{
"vmss": {
"sku": {...},
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/0001-com-ubuntu-server-focal/skus/20_04-lts-gen2/versions/latest",
"aliases": [
"ubuntu-20.04-gen2"
],
"buffer": "0"
},
{
"buffer": "100",
"wellKnownImageName": "windows-2022"
},
{
"buffer": "0",
"wellKnownImageName": "ubuntu-22.04"
}
],
"osProfile": {...},
"storageProfile": {...}
}
}
每個影像都可以有下列屬性。
屬性 |
說明 |
aliases |
別名的選擇性清單。 然後,您可以使用別名來參考映像,而不是映像的完整資源標識碼。 |
resourceID |
要使用的映像資源標識碼。 使用 Azure 計算資源庫映像 或 選取的市集映射時需要。 |
wellKnownImageName |
Azure Pipelines 映射的別名。 使用 Azure Pipelines 映射時需要。 |
buffer |
啟用待命代理程式時,buffer 指定要配置給此映像的待命代理程式百分比。 所有影像 buffer 值的總計必須等於100。 |
下列範例會定義三個影像。 已啟用待命代理程式,其中100%的待命代理程式配置給 windows-2022
映像。
{
"vmss": {
"sku": {...},
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/0001-com-ubuntu-server-focal/skus/20_04-lts-gen2/versions/latest",
"aliases": [
"ubuntu-20.04-gen2"
],
"buffer": "0"
},
{
"buffer": "100",
"wellKnownImageName": "windows-2022"
},
{
"buffer": "0",
"wellKnownImageName": "ubuntu-22.04"
}
],
"osProfile": {...},
"storageProfile": {...}
}
}
如果您選擇單一映像,則所有管線都會使用該映像在集區中執行。 如果您選擇多個映像,您可以指定要以每個管線為基礎的映像。 如需詳細資訊,請參閱 每個集區使用多個映像。
您可以從下列類型的影像中選擇。
Azure Pipelines 映射
受控DevOps集區提供數個預先設定的映像,這些映像具有與 Azure Pipelines 所選Microsoft裝載代理程式相同的軟體。
每個映像都包含下列已安裝的軟體。
映像 |
包含的軟體 |
Azure Pipelines - Windows Server 2022 |
包含的軟體 |
Azure Pipelines - Windows Server 2019 |
包含的軟體 |
Azure Pipelines - Ubuntu 22.04 |
包含的軟體 |
Azure Pipelines - Ubuntu 20.04 |
包含的軟體 |
選取的市集映像
受控 DevOps 集區提供一組精心策劃的Microsoft已發佈的 Azure Marketplace VM 映射,以用於您的集區。
選擇 [選取的市集映射],選擇所需的映像,然後選擇所需的版本。 選擇 latest 以一律使用最新版的映像。
若要指定選取的市集映射,請使用 resourceId
屬性提供映像的資源識別碼。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/0001-com-ubuntu-server-focal/skus/20_04-lts-gen2/versions/latest"
}
]
若要指定選取的市集映射,請使用 resourceId
屬性提供映像的資源識別碼。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/0001-com-ubuntu-server-focal/skus/20_04-lts-gen2/versions/latest"
}
]
Azure 計算資源庫映像
選擇 [Azure 計算資源庫映射 ] 以指定您訂用帳戶中可用之任何 Azure 計算資源庫的映像。 支援具有下列作業系統的一般化 映像。
- Windows Server 2019
- Windows Server 2022
- Windows 11
- Ubuntu 20.04
- Ubuntu 22.04
- Ubuntu 24.04
- Debian 9
- RHEL 8
- RHEL 9
- SUSE 12
- SUSE 15
重要
受控DevOps集區僅 支援一般化的 Azure 計算資源庫映像。
若要指定 Azure 計算資源庫映像,請使用 resourceId
屬性提供映像的資源識別碼。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/0001-com-ubuntu-server-focal/skus/20_04-lts-gen2/versions/latest"
}
]
若要指定選取的市集映射,請使用 resourceId
屬性提供映像的資源識別碼。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/0001-com-ubuntu-server-focal/skus/20_04-lts-gen2/versions/latest"
}
]
授與讀者角色對 DevOpsInfrastructure 服務主體的存取權
重要
將讀取者角色指派給您想要使用的 Azure 計算資源庫映射的 DevOpsInfrastructure 服務主體。 如果您選取未設定此存取權的 Azure 計算資源庫映射,集區建立會失敗。 您可以在映射層級個別指派讀取者角色,或在資源庫中所有映像的映像庫層級指派讀取者角色。
移至 Azure 入口網站 中所需的資源。 若要能夠使用資源庫中的所有映像,請移至 Azure 入口網站 中的 Azure 計算資源庫。 若要只使用特定映像,請移至該映像。
選取 [存取控制 (IAM)]。
選取 [新增] > [新增角色指派],開啟 [新增角色指派] 頁面。
指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色。
設定 |
值 |
角色 |
讀取者 |
存取權指派對象 |
Service Principal |
成員 |
DevOpsInfrastructure |
使用每個集區的多個映像搭配別名
如果您的集區中有多個映像,您可以參考該映像的別名,將 Azure DevOps 管線設定為使用特定映像。
若要新增和管理映射別名,請移至 集區設定的 [映射 ] 區段,然後選擇 ..., 新增別名。
將任何所需的別名新增至 [別名 ] 列表,然後選擇 [ 儲存]。
下列範例顯示一個集區,其中包含兩個 Azure Pipelines 映像和一個選取的市集映像。 Azure Pipeline 映射會顯示其默認別名,而選取的市集映像具有名為 ubuntu-20.04-gen2 的單一設定別名。
若要設定別名,請在 aliases
清單中指定它們。 下列範例會使用名為 ubuntu-20.04-gen2
的單一別名來定義一個影像。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/0001-com-ubuntu-server-focal/skus/20_04-lts-gen2/versions/latest",
"aliases": [
"ubuntu-20.04-gen2"
]
}
]
若要設定別名,請在 aliases
清單中指定它們。 下列範例會使用名為 ubuntu-20.04-gen2
的單一別名來定義一個影像。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/0001-com-ubuntu-server-focal/skus/20_04-lts-gen2/versions/latest",
"aliases": [
"ubuntu-20.04-gen2"
]
}
]
Azure Pipelines 映像預先定義的別名
除了您設定的任何別名之外,Azure Pipelines 映射還有下列預先定義的別名。
Azure Pipelines 映射 |
預先定義的別名 |
Azure Pipelines - Windows Server 2022 |
windows-2022 |
Azure Pipelines - Windows Server 2019 |
windows-2019 |
Azure Pipelines - Ubuntu 22.04 |
ubuntu-22.04 |
Azure Pipelines - Ubuntu 20.04 |
ubuntu-20.04 |
使用需求來指定影像
如果您的集區中有多個映像,您可以使用名為 ImageOverride
的需求,設定管線以在特定映射上執行。 當您在管線中指定 ImageOverride
需求時,受控DevOps集區只會使用該映像將作業傳送給代理程式。
若要在具有別名的上一個範例 ubuntu-20.04-gen2
的 Ubuntu 20.04 映射上執行管線,請在管線的 pool
區段中指定下列需求。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageOverride -equals ubuntu-20.04-gen2
重要
請勿將別名名稱的引號放在需求中 ImageOverride
,即使名稱中有空格也一樣。
若要在集區中使用 Azure Pipelines 映像執行管線,請使用上一個數據表中的別名。 若要在上一個範例中的 Azure Pipelines Windows Server 2022 映射上執行管線,請在管線的 pool
區段中指定下列需求。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageOverride -equals windows-2022
另請參閱