Skip to content

Commit 4fa2a1d

Browse files
Merge pull request #8468 from MicrosoftDocs/users/bryanr/add-debugscript-public
Add script to MDP docs
2 parents 6354e64 + 85843fb commit 4fa2a1d

File tree

1 file changed

+101
-1
lines changed

1 file changed

+101
-1
lines changed

docs/managed-devops-pools/configure-networking.md

Lines changed: 101 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Configure networking
33
description: Learn how to configure networking for Managed DevOps Pools.
4-
ms.date: 07/29/2025
4+
ms.date: 10/27/2025
55
ms.custom: sfi-image-nochange
66
---
77

@@ -206,6 +206,106 @@ If you have systems in place on your network (NSG, Firewall, etc.) that restrict
206206

207207
If you configure your Azure DevOps Pipeline to run inside of a container, you need to also allowlist the source of the container image (Docker or ACR).
208208

209+
## Validating endpoint connectivity
210+
211+
To confirm that you can use a given subnet with Managed DevOps Pools, you can run the following script on a resource on that subnet to validate that the network flow is configured to reach all these available endpoints, and additionally the Managed DevOps control plane.
212+
213+
> [!IMPORTANT]
214+
> You must run this script on a resource that is in your subnet, such as a VM or container, to validate that the network path is open from that subnet to the required endpoints.
215+
216+
To run the script with PowerShell Core, or PowerShell 5 or greater, save the following script as `ValidateMDPEndpoints.ps1` and run the following PowerShell command: `.\ValidateMDPEndpoints.ps1 -organization "<your-organization>"`
217+
218+
```powershell
219+
# ValidateMDPEndpoints.ps1
220+
param (
221+
[string]$organization
222+
)
223+
$azureDevOpsUris = @(
224+
"https://dev.azure.com",
225+
"https://vssps.dev.azure.com",
226+
"https://vsrm.dev.azure.com",
227+
"https://management.azure.com",
228+
"https://login.microsoftonline.com",
229+
"https://graph.microsoft.com",
230+
"https://aadcdn.msftauth.net",
231+
"https://${organization}.visualstudio.com",
232+
"https://${organization}.vsrm.visualstudio.com",
233+
"https://${organization}.vstmr.visualstudio.com",
234+
"https://${organization}.pkgs.visualstudio.com",
235+
"https://${organization}.vssps.visualstudio.com",
236+
"https://download.agent.dev.azure.com",
237+
"download.agent.dev.azure.com"
238+
)
239+
$managedDevOpsPoolsControlPlaneUris = @(
240+
# List of agent queue endpoints - maps to *.queue.core.windows.net
241+
"https://rmprodaedefaultcq.queue.core.windows.net",
242+
"https://rmprodbrsdefaultcq.queue.core.windows.net",
243+
"https://rmprodcncdefaultcq.queue.core.windows.net",
244+
"https://rmprodcusdefaultcq.queue.core.windows.net",
245+
"https://rmprodeus2defaultcq.queue.core.windows.net",
246+
"https://rmprodgwcdefaultcq.queue.core.windows.net",
247+
"https://rmprodincdefaultcq.queue.core.windows.net",
248+
"https://rmprodneudefaultcq.queue.core.windows.net",
249+
"https://rmprodseadefaultcq.queue.core.windows.net",
250+
"https://rmprodszndefaultcq.queue.core.windows.net",
251+
"https://rmproduksdefaultcq.queue.core.windows.net",
252+
"https://rmprodwcusdefaultcq.queue.core.windows.net",
253+
"https://rmprodwus3defaultcq.queue.core.windows.net",
254+
# CDN for downloading the Managed DevOps Pools agent - maps to *.prod.managedevops.microsoft.com
255+
"rm-agent.prod.manageddevops.microsoft.com"
256+
# List of control plane endpoints - maps to *.manageddevops.microsoft.com
257+
"default.ae.prod.manageddevops.microsoft.com",
258+
"default.brs.prod.manageddevops.microsoft.com",
259+
"default.cnc.prod.manageddevops.microsoft.com",
260+
"default.cus.prod.manageddevops.microsoft.com",
261+
"default.eus2.prod.manageddevops.microsoft.com",
262+
"default.gwc.prod.manageddevops.microsoft.com",
263+
"default.inc.prod.manageddevops.microsoft.com",
264+
"default.neu.prod.manageddevops.microsoft.com",
265+
"default.sea.prod.manageddevops.microsoft.com",
266+
"default.szn.prod.manageddevops.microsoft.com",
267+
"default.uks.prod.manageddevops.microsoft.com",
268+
"default.wcus.prod.manageddevops.microsoft.com",
269+
"default.wus3.prod.manageddevops.microsoft.com"
270+
)
271+
$unreachableUris = @()
272+
foreach ($uri in $azureDevOpsUris) {
273+
try {
274+
$hostName = ($uri -replace "^https?://", "") -replace "/.*", ""
275+
$connection = Test-NetConnection -ComputerName $hostName -Port 443 -WarningAction SilentlyContinue
276+
if (-not $connection.TcpTestSucceeded) {
277+
$unreachableUris += $uri
278+
}
279+
} catch {
280+
$unreachableUris += $uri
281+
}
282+
}
283+
if ($unreachableUris.Count -eq 0) {
284+
Write-Output "All Azure DevOps endpoints are reachable."
285+
} else {
286+
Write-Output "The following Azure DevOps endpoints could not be reached:"
287+
$unreachableUris | ForEach-Object { Write-Output $_ }
288+
}
289+
foreach ($uri in $managedDevOpsPoolsControlPlaneUris) {
290+
try {
291+
$hostName = ($uri -replace "^https?://", "") -replace "/.*", ""
292+
$connection = Test-NetConnection -ComputerName $hostName -Port 443 -WarningAction SilentlyContinue
293+
294+
if (-not $connection.TcpTestSucceeded) {
295+
$unreachableUris += $uri
296+
}
297+
} catch {
298+
$unreachableUris += $uri
299+
}
300+
}
301+
if ($unreachableUris.Count -eq 0) {
302+
Write-Output "All Azure Managed DevOps Pools endpoints are reachable."
303+
} else {
304+
Write-Output "The following Managed DevOps Pools endpoints could not be reached:"
305+
$unreachableUris | ForEach-Object { Write-Output $_ }
306+
}
307+
```
308+
209309
## Configure the Azure DevOps Agent to run behind a Proxy
210310

211311
If you configured a proxy service on your image and want your workloads running on your Managed DevOps pool to run behind this proxy, you must add the following environment variables on your image.

0 commit comments

Comments
 (0)