Note
Access to this page requires authorization. You can try signing in or .
Access to this page requires authorization. You can try .
Microsoft.DevOpsInfrastructure pools
Bicep resource definition
The pools resource type can be deployed with operations that target:
- Resource groups - See resource group deployment commands
For a list of changed properties in each API version, see change log.
Resource format
To create a Microsoft.DevOpsInfrastructure/pools resource, add the following Bicep to your template.
resource symbolicname 'Microsoft.DevOpsInfrastructure/pools@2026-04-17-preview' = {
identity: {
type: 'string'
userAssignedIdentities: {
{customized property}: {}
}
}
location: 'string'
name: 'string'
properties: {
agentProfile: {
resourcePredictions: any(...)
resourcePredictionsProfile: {
kind: 'string'
// For remaining properties, see ResourcePredictionsProfile objects
}
kind: 'string'
// For remaining properties, see AgentProfile objects
}
devCenterProjectResourceId: 'string'
fabricProfile: {
kind: 'string'
// For remaining properties, see FabricProfile objects
}
maximumConcurrency: int
organizationProfile: {
kind: 'string'
// For remaining properties, see OrganizationProfile objects
}
provisioningState: 'string'
runtimeConfiguration: {
workFolder: 'string'
}
}
tags: {
{customized property}: 'string'
}
}
ResourcePredictionsProfile objects
Set the kind property to specify the type of object.
For Automatic, use:
{
kind: 'Automatic'
predictionPreference: 'string'
}
For Manual, use:
{
kind: 'Manual'
}
AgentProfile objects
Set the kind property to specify the type of object.
For Stateful, use:
{
gracePeriodTimeSpan: 'string'
kind: 'Stateful'
maxAgentLifetime: 'string'
}
For Stateless, use:
{
kind: 'Stateless'
}
FabricProfile objects
Set the kind property to specify the type of object.
For Vmss, use:
{
images: [
{
aliases: [
'string'
]
buffer: 'string'
ephemeralType: 'string'
resourceId: 'string'
wellKnownImageName: 'string'
}
]
kind: 'Vmss'
networkProfile: {
staticIpAddressCount: int
subnetId: 'string'
}
osProfile: {
logonType: 'string'
secretsManagementSettings: {
certificateStoreLocation: 'string'
certificateStoreName: 'string'
keyExportable: bool
observedCertificates: [
'string'
]
}
}
sku: {
linuxNvmePath: 'string'
name: 'string'
windowsNvmeDrive: 'string'
}
storageProfile: {
dataDisks: [
{
caching: 'string'
diskSizeGiB: int
driveLetter: 'string'
storageAccountType: 'string'
}
]
osDiskStorageAccountType: 'string'
}
}
OrganizationProfile objects
Set the kind property to specify the type of object.
For AzureDevOps, use:
{
alias: 'string'
kind: 'AzureDevOps'
organizations: [
{
alias: 'string'
openAccess: bool
parallelism: int
projects: [
'string'
]
url: 'string'
}
]
permissionProfile: {
groups: [
'string'
]
kind: 'string'
users: [
'string'
]
}
}
For GitHub, use:
{
kind: 'GitHub'
organizations: [
{
repositories: [
'string'
]
url: 'string'
}
]
}
Property Values
Microsoft.DevOpsInfrastructure/pools
| Name | Description | Value |
|---|---|---|
| identity | The managed service identities assigned to this resource. | ManagedServiceIdentity |
| location | The geo-location where the resource lives | string (required) |
| name | The resource name | string Constraints: Pattern = ^[a-zA-Z0-9][a-zA-Z0-9-.]*$ (required) |
| properties | The resource-specific properties for this resource. | PoolProperties |
| tags | Resource tags | Dictionary of tag names and values. See Tags in templates |
AgentProfile
| Name | Description | Value |
|---|---|---|
| kind | Set to 'Stateful' for type Stateful. Set to 'Stateless' for type StatelessAgentProfile. | 'Stateful' 'Stateless' (required) |
| resourcePredictions | Defines pool buffer/stand-by agents. | any |
| resourcePredictionsProfile | Defines how the pool buffer/stand-by agents is provided. | ResourcePredictionsProfile |
AutomaticResourcePredictionsProfile
| Name | Description | Value |
|---|---|---|
| kind | Determines how the stand-by scheme should be provided. | 'Automatic' (required) |
| predictionPreference | Determines the balance between cost and performance. | 'Balanced' 'BestPerformance' 'MoreCostEffective' 'MorePerformance' 'MostCostEffective' |
AzureDevOpsOrganizationProfile
| Name | Description | Value |
|---|---|---|
| alias | An alias to reference the Azure DevOps pool name. | string |
| kind | Discriminator property for OrganizationProfile. | 'AzureDevOps' (required) |
| organizations | The list of Azure DevOps organizations the pool should be present in. | Organization[] (required) |
| permissionProfile | The type of permission which determines which accounts are admins on the Azure DevOps pool. | AzureDevOpsPermissionProfile |
AzureDevOpsPermissionProfile
| Name | Description | Value |
|---|---|---|
| groups | Group email addresses | string[] |
| kind | Determines who has admin permissions to the Azure DevOps pool. | 'CreatorOnly' 'Inherit' 'SpecificAccounts' (required) |
| users | User email addresses | string[] |
DataDisk
| Name | Description | Value |
|---|---|---|
| caching | The type of caching to be enabled for the data disks. The default value for caching is readwrite. For information about the caching options see: https://blogs.msdn.microsoft.com/windowsazurestorage/2012/06/27/exploring-windows-azure-drives-disks-and-images/. | 'None' 'ReadOnly' 'ReadWrite' |
| diskSizeGiB | The initial disk size in gigabytes. | int |
| driveLetter | The drive letter for the empty data disk. If not specified, it will be the first available letter. | string |
| storageAccountType | The storage Account type to be used for the data disk. If omitted, the default is "standard_lrs". | 'Premium_LRS' 'Premium_ZRS' 'StandardSSD_LRS' 'StandardSSD_ZRS' 'Standard_LRS' |
DevOpsAzureSku
| Name | Description | Value |
|---|---|---|
| linuxNvmePath | The mount path for the NVMe striped volume on Linux (e.g., '/mnt/azure_nvme_temp'). Defaults to '/mnt/azure_nvme_temp' when not specified. | string |
| name | The Azure SKU name of the machines in the pool. | string (required) |
| windowsNvmeDrive | The drive letter for the NVMe striped volume on Windows (e.g., 'N'). Defaults to 'N' when not specified. | string |
FabricProfile
| Name | Description | Value |
|---|---|---|
| kind | Set to 'Vmss' for type VmssFabricProfile. | 'Vmss' (required) |
GitHubOrganization
| Name | Description | Value |
|---|---|---|
| repositories | Optional list of repositories in which the pool should be created. | string[] |
| url | The GitHub organization URL in which the pool should be created. | string (required) |
GitHubOrganizationProfile
| Name | Description | Value |
|---|---|---|
| kind | Discriminator property for OrganizationProfile. | 'GitHub' (required) |
| organizations | The list of GitHub organizations/repositories the pool should be present in. | GitHubOrganization[] (required) |
ManagedServiceIdentity
| Name | Description | Value |
|---|---|---|
| type | Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed). | 'None' 'SystemAssigned' 'SystemAssigned,UserAssigned' 'UserAssigned' (required) |
| userAssignedIdentities | The set of user assigned identities associated with the resource. The userAssignedIdentities dictionary keys will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. The dictionary values can be empty objects ({}) in requests. | ManagedServiceIdentityUserAssignedIdentities |
ManagedServiceIdentityUserAssignedIdentities
| Name | Description | Value |
|---|
ManualResourcePredictionsProfile
| Name | Description | Value |
|---|---|---|
| kind | Determines how the stand-by scheme should be provided. | 'Manual' (required) |
NetworkProfile
| Name | Description | Value |
|---|---|---|
| staticIpAddressCount | The number of static public IP addresses for outgoing connections assigned to the pool. | int |
| subnetId | The subnet id on which to put all machines created in the pool. | string |
Organization
| Name | Description | Value |
|---|---|---|
| alias | An alias to reference the Azure DevOps pool name. | string |
| openAccess | Determines if the pool should have open access to all projects in this organization. | bool |
| parallelism | How many machines can be created at maximum in this organization out of the maximumConcurrency of the pool. | int |
| projects | Optional list of projects in which the pool should be created. | string[] |
| url | The Azure DevOps organization URL in which the pool should be created. | string (required) |
OrganizationProfile
| Name | Description | Value |
|---|---|---|
| kind | Set to 'AzureDevOps' for type AzureDevOpsOrganizationProfile. Set to 'GitHub' for type GitHubOrganizationProfile. | 'AzureDevOps' 'GitHub' (required) |
OsProfile
| Name | Description | Value |
|---|---|---|
| logonType | Determines how the service should be run. By default, this will be set to Service. | 'Interactive' 'Service' |
| secretsManagementSettings | The secret management settings of the machines in the pool. | SecretsManagementSettings |
PoolImage
| Name | Description | Value |
|---|---|---|
| aliases | List of aliases to reference the image by. | string[] |
| buffer | The percentage of the buffer to be allocated to this image. | string |
| ephemeralType | The ephemeral type of the image. | 'Automatic' 'CacheDisk' 'ResourceDisk' |
| resourceId | The resource id of the image. | string |
| wellKnownImageName | The image to use from a well-known set of images made available to customers. | string |
PoolProperties
| Name | Description | Value |
|---|---|---|
| agentProfile | Defines how the machine will be handled once it executed a job. | AgentProfile (required) |
| devCenterProjectResourceId | The resource id of the DevCenter Project the pool belongs to. | string (required) |
| fabricProfile | Defines the type of fabric the agent will run on. | FabricProfile (required) |
| maximumConcurrency | Defines how many resources can there be created at any given time. | int Constraints: Min value = 1 Max value = 10000 (required) |
| organizationProfile | Defines the organization in which the pool will be used. | OrganizationProfile (required) |
| provisioningState | The status of the current operation. | 'Accepted' 'Canceled' 'Deleting' 'Failed' 'Provisioning' 'Succeeded' 'Updating' |
| runtimeConfiguration | The runtime configuration of the pool. | RuntimeConfiguration |
ResourcePredictionsProfile
| Name | Description | Value |
|---|---|---|
| kind | Set to 'Automatic' for type AutomaticResourcePredictionsProfile. Set to 'Manual' for type ManualResourcePredictionsProfile. | 'Automatic' 'Manual' (required) |
RuntimeConfiguration
| Name | Description | Value |
|---|---|---|
| workFolder | The target work folder of the task agent on the machine. | string |
SecretsManagementSettings
| Name | Description | Value |
|---|---|---|
| certificateStoreLocation | Where to store certificates on the machine. | string |
| certificateStoreName | Name of the certificate store to use on the machine, currently 'My' and 'Root' are supported. | 'My' 'Root' |
| keyExportable | Defines if the key of the certificates should be exportable. | bool (required) |
| observedCertificates | The list of certificates to install on all machines in the pool. | string[] (required) |
Stateful
| Name | Description | Value |
|---|---|---|
| gracePeriodTimeSpan | How long should the machine be kept around after it ran a workload when there are no stand-by agents. The maximum is one week. | string |
| kind | Discriminator property for AgentProfile. | 'Stateful' (required) |
| maxAgentLifetime | How long should stateful machines be kept around. The maximum is one week. | string |
StatelessAgentProfile
| Name | Description | Value |
|---|---|---|
| kind | Discriminator property for AgentProfile. | 'Stateless' (required) |
StorageProfile
| Name | Description | Value |
|---|---|---|
| dataDisks | A list of empty data disks to attach. | DataDisk[] |
| osDiskStorageAccountType | The Azure SKU name of the machines in the pool. | 'Premium' 'Standard' 'StandardSSD' |
TrackedResourceTags
| Name | Description | Value |
|---|
UserAssignedIdentity
| Name | Description | Value |
|---|
VmssFabricProfile
| Name | Description | Value |
|---|---|---|
| images | The VM images of the machines in the pool. | PoolImage[] (required) |
| kind | Discriminator property for FabricProfile. | 'Vmss' (required) |
| networkProfile | The network profile of the machines in the pool. | NetworkProfile |
| osProfile | The OS profile of the machines in the pool. | OsProfile |
| sku | The Azure SKU of the machines in the pool. | DevOpsAzureSku (required) |
| storageProfile | The storage profile of the machines in the pool. | StorageProfile |
Usage Examples
Azure Verified Modules
The following Azure Verified Modules can be used to deploy this resource type.
| Module | Description |
|---|---|
| DevOps Infrastructure Pool | AVM Resource Module for DevOps Infrastructure Pool |
ARM template resource definition
The pools resource type can be deployed with operations that target:
- Resource groups - See resource group deployment commands
For a list of changed properties in each API version, see change log.
Resource format
To create a Microsoft.DevOpsInfrastructure/pools resource, add the following JSON to your template.
{
"type": "Microsoft.DevOpsInfrastructure/pools",
"apiVersion": "2026-04-17-preview",
"name": "string",
"identity": {
"type": "string",
"userAssignedIdentities": {
"{customized property}": {
}
}
},
"location": "string",
"properties": {
"agentProfile": {
"resourcePredictions": {},
"resourcePredictionsProfile": {
"kind": "string"
// For remaining properties, see ResourcePredictionsProfile objects
},
"kind": "string"
// For remaining properties, see AgentProfile objects
},
"devCenterProjectResourceId": "string",
"fabricProfile": {
"kind": "string"
// For remaining properties, see FabricProfile objects
},
"maximumConcurrency": "int",
"organizationProfile": {
"kind": "string"
// For remaining properties, see OrganizationProfile objects
},
"provisioningState": "string",
"runtimeConfiguration": {
"workFolder": "string"
}
},
"tags": {
"{customized property}": "string"
}
}
ResourcePredictionsProfile objects
Set the kind property to specify the type of object.
For Automatic, use:
{
"kind": "Automatic",
"predictionPreference": "string"
}
For Manual, use:
{
"kind": "Manual"
}
AgentProfile objects
Set the kind property to specify the type of object.
For Stateful, use:
{
"gracePeriodTimeSpan": "string",
"kind": "Stateful",
"maxAgentLifetime": "string"
}
For Stateless, use:
{
"kind": "Stateless"
}
FabricProfile objects
Set the kind property to specify the type of object.
For Vmss, use:
{
"images": [
{
"aliases": [ "string" ],
"buffer": "string",
"ephemeralType": "string",
"resourceId": "string",
"wellKnownImageName": "string"
}
],
"kind": "Vmss",
"networkProfile": {
"staticIpAddressCount": "int",
"subnetId": "string"
},
"osProfile": {
"logonType": "string",
"secretsManagementSettings": {
"certificateStoreLocation": "string",
"certificateStoreName": "string",
"keyExportable": "bool",
"observedCertificates": [ "string" ]
}
},
"sku": {
"linuxNvmePath": "string",
"name": "string",
"windowsNvmeDrive": "string"
},
"storageProfile": {
"dataDisks": [
{
"caching": "string",
"diskSizeGiB": "int",
"driveLetter": "string",
"storageAccountType": "string"
}
],
"osDiskStorageAccountType": "string"
}
}
OrganizationProfile objects
Set the kind property to specify the type of object.
For AzureDevOps, use:
{
"alias": "string",
"kind": "AzureDevOps",
"organizations": [
{
"alias": "string",
"openAccess": "bool",
"parallelism": "int",
"projects": [ "string" ],
"url": "string"
}
],
"permissionProfile": {
"groups": [ "string" ],
"kind": "string",
"users": [ "string" ]
}
}
For GitHub, use:
{
"kind": "GitHub",
"organizations": [
{
"repositories": [ "string" ],
"url": "string"
}
]
}
Property Values
Microsoft.DevOpsInfrastructure/pools
| Name | Description | Value |
|---|---|---|
| apiVersion | The api version | '2026-04-17-preview' |
| identity | The managed service identities assigned to this resource. | ManagedServiceIdentity |
| location | The geo-location where the resource lives | string (required) |
| name | The resource name | string Constraints: Pattern = ^[a-zA-Z0-9][a-zA-Z0-9-.]*$ (required) |
| properties | The resource-specific properties for this resource. | PoolProperties |
| tags | Resource tags | Dictionary of tag names and values. See Tags in templates |
| type | The resource type | 'Microsoft.DevOpsInfrastructure/pools' |
AgentProfile
| Name | Description | Value |
|---|---|---|
| kind | Set to 'Stateful' for type Stateful. Set to 'Stateless' for type StatelessAgentProfile. | 'Stateful' 'Stateless' (required) |
| resourcePredictions | Defines pool buffer/stand-by agents. | any |
| resourcePredictionsProfile | Defines how the pool buffer/stand-by agents is provided. | ResourcePredictionsProfile |
AutomaticResourcePredictionsProfile
| Name | Description | Value |
|---|---|---|
| kind | Determines how the stand-by scheme should be provided. | 'Automatic' (required) |
| predictionPreference | Determines the balance between cost and performance. | 'Balanced' 'BestPerformance' 'MoreCostEffective' 'MorePerformance' 'MostCostEffective' |
AzureDevOpsOrganizationProfile
| Name | Description | Value |
|---|---|---|
| alias | An alias to reference the Azure DevOps pool name. | string |
| kind | Discriminator property for OrganizationProfile. | 'AzureDevOps' (required) |
| organizations | The list of Azure DevOps organizations the pool should be present in. | Organization[] (required) |
| permissionProfile | The type of permission which determines which accounts are admins on the Azure DevOps pool. | AzureDevOpsPermissionProfile |
AzureDevOpsPermissionProfile
| Name | Description | Value |
|---|---|---|
| groups | Group email addresses | string[] |
| kind | Determines who has admin permissions to the Azure DevOps pool. | 'CreatorOnly' 'Inherit' 'SpecificAccounts' (required) |
| users | User email addresses | string[] |
DataDisk
| Name | Description | Value |
|---|---|---|
| caching | The type of caching to be enabled for the data disks. The default value for caching is readwrite. For information about the caching options see: https://blogs.msdn.microsoft.com/windowsazurestorage/2012/06/27/exploring-windows-azure-drives-disks-and-images/. | 'None' 'ReadOnly' 'ReadWrite' |
| diskSizeGiB | The initial disk size in gigabytes. | int |
| driveLetter | The drive letter for the empty data disk. If not specified, it will be the first available letter. | string |
| storageAccountType | The storage Account type to be used for the data disk. If omitted, the default is "standard_lrs". | 'Premium_LRS' 'Premium_ZRS' 'StandardSSD_LRS' 'StandardSSD_ZRS' 'Standard_LRS' |
DevOpsAzureSku
| Name | Description | Value |
|---|---|---|
| linuxNvmePath | The mount path for the NVMe striped volume on Linux (e.g., '/mnt/azure_nvme_temp'). Defaults to '/mnt/azure_nvme_temp' when not specified. | string |
| name | The Azure SKU name of the machines in the pool. | string (required) |
| windowsNvmeDrive | The drive letter for the NVMe striped volume on Windows (e.g., 'N'). Defaults to 'N' when not specified. | string |
FabricProfile
| Name | Description | Value |
|---|---|---|
| kind | Set to 'Vmss' for type VmssFabricProfile. | 'Vmss' (required) |
GitHubOrganization
| Name | Description | Value |
|---|---|---|
| repositories | Optional list of repositories in which the pool should be created. | string[] |
| url | The GitHub organization URL in which the pool should be created. | string (required) |
GitHubOrganizationProfile
| Name | Description | Value |
|---|---|---|
| kind | Discriminator property for OrganizationProfile. | 'GitHub' (required) |
| organizations | The list of GitHub organizations/repositories the pool should be present in. | GitHubOrganization[] (required) |
ManagedServiceIdentity
| Name | Description | Value |
|---|---|---|
| type | Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed). | 'None' 'SystemAssigned' 'SystemAssigned,UserAssigned' 'UserAssigned' (required) |
| userAssignedIdentities | The set of user assigned identities associated with the resource. The userAssignedIdentities dictionary keys will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. The dictionary values can be empty objects ({}) in requests. | ManagedServiceIdentityUserAssignedIdentities |
ManagedServiceIdentityUserAssignedIdentities
| Name | Description | Value |
|---|
ManualResourcePredictionsProfile
| Name | Description | Value |
|---|---|---|
| kind | Determines how the stand-by scheme should be provided. | 'Manual' (required) |
NetworkProfile
| Name | Description | Value |
|---|---|---|
| staticIpAddressCount | The number of static public IP addresses for outgoing connections assigned to the pool. | int |
| subnetId | The subnet id on which to put all machines created in the pool. | string |
Organization
| Name | Description | Value |
|---|---|---|
| alias | An alias to reference the Azure DevOps pool name. | string |
| openAccess | Determines if the pool should have open access to all projects in this organization. | bool |
| parallelism | How many machines can be created at maximum in this organization out of the maximumConcurrency of the pool. | int |
| projects | Optional list of projects in which the pool should be created. | string[] |
| url | The Azure DevOps organization URL in which the pool should be created. | string (required) |
OrganizationProfile
| Name | Description | Value |
|---|---|---|
| kind | Set to 'AzureDevOps' for type AzureDevOpsOrganizationProfile. Set to 'GitHub' for type GitHubOrganizationProfile. | 'AzureDevOps' 'GitHub' (required) |
OsProfile
| Name | Description | Value |
|---|---|---|
| logonType | Determines how the service should be run. By default, this will be set to Service. | 'Interactive' 'Service' |
| secretsManagementSettings | The secret management settings of the machines in the pool. | SecretsManagementSettings |
PoolImage
| Name | Description | Value |
|---|---|---|
| aliases | List of aliases to reference the image by. | string[] |
| buffer | The percentage of the buffer to be allocated to this image. | string |
| ephemeralType | The ephemeral type of the image. | 'Automatic' 'CacheDisk' 'ResourceDisk' |
| resourceId | The resource id of the image. | string |
| wellKnownImageName | The image to use from a well-known set of images made available to customers. | string |
PoolProperties
| Name | Description | Value |
|---|---|---|
| agentProfile | Defines how the machine will be handled once it executed a job. | AgentProfile (required) |
| devCenterProjectResourceId | The resource id of the DevCenter Project the pool belongs to. | string (required) |
| fabricProfile | Defines the type of fabric the agent will run on. | FabricProfile (required) |
| maximumConcurrency | Defines how many resources can there be created at any given time. | int Constraints: Min value = 1 Max value = 10000 (required) |
| organizationProfile | Defines the organization in which the pool will be used. | OrganizationProfile (required) |
| provisioningState | The status of the current operation. | 'Accepted' 'Canceled' 'Deleting' 'Failed' 'Provisioning' 'Succeeded' 'Updating' |
| runtimeConfiguration | The runtime configuration of the pool. | RuntimeConfiguration |
ResourcePredictionsProfile
| Name | Description | Value |
|---|---|---|
| kind | Set to 'Automatic' for type AutomaticResourcePredictionsProfile. Set to 'Manual' for type ManualResourcePredictionsProfile. | 'Automatic' 'Manual' (required) |
RuntimeConfiguration
| Name | Description | Value |
|---|---|---|
| workFolder | The target work folder of the task agent on the machine. | string |
SecretsManagementSettings
| Name | Description | Value |
|---|---|---|
| certificateStoreLocation | Where to store certificates on the machine. | string |
| certificateStoreName | Name of the certificate store to use on the machine, currently 'My' and 'Root' are supported. | 'My' 'Root' |
| keyExportable | Defines if the key of the certificates should be exportable. | bool (required) |
| observedCertificates | The list of certificates to install on all machines in the pool. | string[] (required) |
Stateful
| Name | Description | Value |
|---|---|---|
| gracePeriodTimeSpan | How long should the machine be kept around after it ran a workload when there are no stand-by agents. The maximum is one week. | string |
| kind | Discriminator property for AgentProfile. | 'Stateful' (required) |
| maxAgentLifetime | How long should stateful machines be kept around. The maximum is one week. | string |
StatelessAgentProfile
| Name | Description | Value |
|---|---|---|
| kind | Discriminator property for AgentProfile. | 'Stateless' (required) |
StorageProfile
| Name | Description | Value |
|---|---|---|
| dataDisks | A list of empty data disks to attach. | DataDisk[] |
| osDiskStorageAccountType | The Azure SKU name of the machines in the pool. | 'Premium' 'Standard' 'StandardSSD' |
TrackedResourceTags
| Name | Description | Value |
|---|
UserAssignedIdentity
| Name | Description | Value |
|---|
VmssFabricProfile
| Name | Description | Value |
|---|---|---|
| images | The VM images of the machines in the pool. | PoolImage[] (required) |
| kind | Discriminator property for FabricProfile. | 'Vmss' (required) |
| networkProfile | The network profile of the machines in the pool. | NetworkProfile |
| osProfile | The OS profile of the machines in the pool. | OsProfile |
| sku | The Azure SKU of the machines in the pool. | DevOpsAzureSku (required) |
| storageProfile | The storage profile of the machines in the pool. | StorageProfile |
Usage Examples
Terraform (AzAPI provider) resource definition
The pools resource type can be deployed with operations that target:
- Resource groups
For a list of changed properties in each API version, see change log.
Resource format
To create a Microsoft.DevOpsInfrastructure/pools resource, add the following Terraform to your template.
resource "azapi_resource" "symbolicname" {
type = "Microsoft.DevOpsInfrastructure/pools@2026-04-17-preview"
name = "string"
parent_id = "string"
identity {
type = "string"
identity_ids = [
"string"
]
}
location = "string"
tags = {
{customized property} = "string"
}
body = {
properties = {
agentProfile = {
resourcePredictions = ?
resourcePredictionsProfile = {
kind = "string"
// For remaining properties, see ResourcePredictionsProfile objects
}
kind = "string"
// For remaining properties, see AgentProfile objects
}
devCenterProjectResourceId = "string"
fabricProfile = {
kind = "string"
// For remaining properties, see FabricProfile objects
}
maximumConcurrency = int
organizationProfile = {
kind = "string"
// For remaining properties, see OrganizationProfile objects
}
provisioningState = "string"
runtimeConfiguration = {
workFolder = "string"
}
}
}
}
ResourcePredictionsProfile objects
Set the kind property to specify the type of object.
For Automatic, use:
{
kind = "Automatic"
predictionPreference = "string"
}
For Manual, use:
{
kind = "Manual"
}
AgentProfile objects
Set the kind property to specify the type of object.
For Stateful, use:
{
gracePeriodTimeSpan = "string"
kind = "Stateful"
maxAgentLifetime = "string"
}
For Stateless, use:
{
kind = "Stateless"
}
FabricProfile objects
Set the kind property to specify the type of object.
For Vmss, use:
{
images = [
{
aliases = [
"string"
]
buffer = "string"
ephemeralType = "string"
resourceId = "string"
wellKnownImageName = "string"
}
]
kind = "Vmss"
networkProfile = {
staticIpAddressCount = int
subnetId = "string"
}
osProfile = {
logonType = "string"
secretsManagementSettings = {
certificateStoreLocation = "string"
certificateStoreName = "string"
keyExportable = bool
observedCertificates = [
"string"
]
}
}
sku = {
linuxNvmePath = "string"
name = "string"
windowsNvmeDrive = "string"
}
storageProfile = {
dataDisks = [
{
caching = "string"
diskSizeGiB = int
driveLetter = "string"
storageAccountType = "string"
}
]
osDiskStorageAccountType = "string"
}
}
OrganizationProfile objects
Set the kind property to specify the type of object.
For AzureDevOps, use:
{
alias = "string"
kind = "AzureDevOps"
organizations = [
{
alias = "string"
openAccess = bool
parallelism = int
projects = [
"string"
]
url = "string"
}
]
permissionProfile = {
groups = [
"string"
]
kind = "string"
users = [
"string"
]
}
}
For GitHub, use:
{
kind = "GitHub"
organizations = [
{
repositories = [
"string"
]
url = "string"
}
]
}
Property Values
Microsoft.DevOpsInfrastructure/pools
| Name | Description | Value |
|---|---|---|
| identity | The managed service identities assigned to this resource. | ManagedServiceIdentity |
| location | The geo-location where the resource lives | string (required) |
| name | The resource name | string Constraints: Pattern = ^[a-zA-Z0-9][a-zA-Z0-9-.]*$ (required) |
| properties | The resource-specific properties for this resource. | PoolProperties |
| tags | Resource tags | Dictionary of tag names and values. |
| type | The resource type | "Microsoft.DevOpsInfrastructure/pools@2026-04-17-preview" |
AgentProfile
| Name | Description | Value |
|---|---|---|
| kind | Set to 'Stateful' for type Stateful. Set to 'Stateless' for type StatelessAgentProfile. | 'Stateful' 'Stateless' (required) |
| resourcePredictions | Defines pool buffer/stand-by agents. | any |
| resourcePredictionsProfile | Defines how the pool buffer/stand-by agents is provided. | ResourcePredictionsProfile |
AutomaticResourcePredictionsProfile
| Name | Description | Value |
|---|---|---|
| kind | Determines how the stand-by scheme should be provided. | 'Automatic' (required) |
| predictionPreference | Determines the balance between cost and performance. | 'Balanced' 'BestPerformance' 'MoreCostEffective' 'MorePerformance' 'MostCostEffective' |
AzureDevOpsOrganizationProfile
| Name | Description | Value |
|---|---|---|
| alias | An alias to reference the Azure DevOps pool name. | string |
| kind | Discriminator property for OrganizationProfile. | 'AzureDevOps' (required) |
| organizations | The list of Azure DevOps organizations the pool should be present in. | Organization[] (required) |
| permissionProfile | The type of permission which determines which accounts are admins on the Azure DevOps pool. | AzureDevOpsPermissionProfile |
AzureDevOpsPermissionProfile
| Name | Description | Value |
|---|---|---|
| groups | Group email addresses | string[] |
| kind | Determines who has admin permissions to the Azure DevOps pool. | 'CreatorOnly' 'Inherit' 'SpecificAccounts' (required) |
| users | User email addresses | string[] |
DataDisk
| Name | Description | Value |
|---|---|---|
| caching | The type of caching to be enabled for the data disks. The default value for caching is readwrite. For information about the caching options see: https://blogs.msdn.microsoft.com/windowsazurestorage/2012/06/27/exploring-windows-azure-drives-disks-and-images/. | 'None' 'ReadOnly' 'ReadWrite' |
| diskSizeGiB | The initial disk size in gigabytes. | int |
| driveLetter | The drive letter for the empty data disk. If not specified, it will be the first available letter. | string |
| storageAccountType | The storage Account type to be used for the data disk. If omitted, the default is "standard_lrs". | 'Premium_LRS' 'Premium_ZRS' 'StandardSSD_LRS' 'StandardSSD_ZRS' 'Standard_LRS' |
DevOpsAzureSku
| Name | Description | Value |
|---|---|---|
| linuxNvmePath | The mount path for the NVMe striped volume on Linux (e.g., '/mnt/azure_nvme_temp'). Defaults to '/mnt/azure_nvme_temp' when not specified. | string |
| name | The Azure SKU name of the machines in the pool. | string (required) |
| windowsNvmeDrive | The drive letter for the NVMe striped volume on Windows (e.g., 'N'). Defaults to 'N' when not specified. | string |
FabricProfile
| Name | Description | Value |
|---|---|---|
| kind | Set to 'Vmss' for type VmssFabricProfile. | 'Vmss' (required) |
GitHubOrganization
| Name | Description | Value |
|---|---|---|
| repositories | Optional list of repositories in which the pool should be created. | string[] |
| url | The GitHub organization URL in which the pool should be created. | string (required) |
GitHubOrganizationProfile
| Name | Description | Value |
|---|---|---|
| kind | Discriminator property for OrganizationProfile. | 'GitHub' (required) |
| organizations | The list of GitHub organizations/repositories the pool should be present in. | GitHubOrganization[] (required) |
ManagedServiceIdentity
| Name | Description | Value |
|---|---|---|
| type | Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed). | 'None' 'SystemAssigned' 'SystemAssigned,UserAssigned' 'UserAssigned' (required) |
| userAssignedIdentities | The set of user assigned identities associated with the resource. The userAssignedIdentities dictionary keys will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. The dictionary values can be empty objects ({}) in requests. | ManagedServiceIdentityUserAssignedIdentities |
ManagedServiceIdentityUserAssignedIdentities
| Name | Description | Value |
|---|
ManualResourcePredictionsProfile
| Name | Description | Value |
|---|---|---|
| kind | Determines how the stand-by scheme should be provided. | 'Manual' (required) |
NetworkProfile
| Name | Description | Value |
|---|---|---|
| staticIpAddressCount | The number of static public IP addresses for outgoing connections assigned to the pool. | int |
| subnetId | The subnet id on which to put all machines created in the pool. | string |
Organization
| Name | Description | Value |
|---|---|---|
| alias | An alias to reference the Azure DevOps pool name. | string |
| openAccess | Determines if the pool should have open access to all projects in this organization. | bool |
| parallelism | How many machines can be created at maximum in this organization out of the maximumConcurrency of the pool. | int |
| projects | Optional list of projects in which the pool should be created. | string[] |
| url | The Azure DevOps organization URL in which the pool should be created. | string (required) |
OrganizationProfile
| Name | Description | Value |
|---|---|---|
| kind | Set to 'AzureDevOps' for type AzureDevOpsOrganizationProfile. Set to 'GitHub' for type GitHubOrganizationProfile. | 'AzureDevOps' 'GitHub' (required) |
OsProfile
| Name | Description | Value |
|---|---|---|
| logonType | Determines how the service should be run. By default, this will be set to Service. | 'Interactive' 'Service' |
| secretsManagementSettings | The secret management settings of the machines in the pool. | SecretsManagementSettings |
PoolImage
| Name | Description | Value |
|---|---|---|
| aliases | List of aliases to reference the image by. | string[] |
| buffer | The percentage of the buffer to be allocated to this image. | string |
| ephemeralType | The ephemeral type of the image. | 'Automatic' 'CacheDisk' 'ResourceDisk' |
| resourceId | The resource id of the image. | string |
| wellKnownImageName | The image to use from a well-known set of images made available to customers. | string |
PoolProperties
| Name | Description | Value |
|---|---|---|
| agentProfile | Defines how the machine will be handled once it executed a job. | AgentProfile (required) |
| devCenterProjectResourceId | The resource id of the DevCenter Project the pool belongs to. | string (required) |
| fabricProfile | Defines the type of fabric the agent will run on. | FabricProfile (required) |
| maximumConcurrency | Defines how many resources can there be created at any given time. | int Constraints: Min value = 1 Max value = 10000 (required) |
| organizationProfile | Defines the organization in which the pool will be used. | OrganizationProfile (required) |
| provisioningState | The status of the current operation. | 'Accepted' 'Canceled' 'Deleting' 'Failed' 'Provisioning' 'Succeeded' 'Updating' |
| runtimeConfiguration | The runtime configuration of the pool. | RuntimeConfiguration |
ResourcePredictionsProfile
| Name | Description | Value |
|---|---|---|
| kind | Set to 'Automatic' for type AutomaticResourcePredictionsProfile. Set to 'Manual' for type ManualResourcePredictionsProfile. | 'Automatic' 'Manual' (required) |
RuntimeConfiguration
| Name | Description | Value |
|---|---|---|
| workFolder | The target work folder of the task agent on the machine. | string |
SecretsManagementSettings
| Name | Description | Value |
|---|---|---|
| certificateStoreLocation | Where to store certificates on the machine. | string |
| certificateStoreName | Name of the certificate store to use on the machine, currently 'My' and 'Root' are supported. | 'My' 'Root' |
| keyExportable | Defines if the key of the certificates should be exportable. | bool (required) |
| observedCertificates | The list of certificates to install on all machines in the pool. | string[] (required) |
Stateful
| Name | Description | Value |
|---|---|---|
| gracePeriodTimeSpan | How long should the machine be kept around after it ran a workload when there are no stand-by agents. The maximum is one week. | string |
| kind | Discriminator property for AgentProfile. | 'Stateful' (required) |
| maxAgentLifetime | How long should stateful machines be kept around. The maximum is one week. | string |
StatelessAgentProfile
| Name | Description | Value |
|---|---|---|
| kind | Discriminator property for AgentProfile. | 'Stateless' (required) |
StorageProfile
| Name | Description | Value |
|---|---|---|
| dataDisks | A list of empty data disks to attach. | DataDisk[] |
| osDiskStorageAccountType | The Azure SKU name of the machines in the pool. | 'Premium' 'Standard' 'StandardSSD' |
TrackedResourceTags
| Name | Description | Value |
|---|
UserAssignedIdentity
| Name | Description | Value |
|---|
VmssFabricProfile
| Name | Description | Value |
|---|---|---|
| images | The VM images of the machines in the pool. | PoolImage[] (required) |
| kind | Discriminator property for FabricProfile. | 'Vmss' (required) |
| networkProfile | The network profile of the machines in the pool. | NetworkProfile |
| osProfile | The OS profile of the machines in the pool. | OsProfile |
| sku | The Azure SKU of the machines in the pool. | DevOpsAzureSku (required) |
| storageProfile | The storage profile of the machines in the pool. | StorageProfile |
Usage Examples
Azure Verified Modules
The following Azure Verified Modules can be used to deploy this resource type.
| Module | Description |
|---|---|
| DevOps Pools | AVM Resource Module for DevOps Pools |
Feedback
Was this page helpful?
