You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps环境中指定虚拟机批量执行任务方案咨询

针对Azure DevOps环境中指定虚拟机执行任务的方案(无标签可用)

核心思路

没法用标签区分虚拟机的情况下,直接通过预定义的目标虚拟机名称列表做匹配筛选——先获取环境内所有虚拟机,再和目标列表比对,仅对匹配成功的虚拟机执行特定任务。

具体实现步骤

1. 定义目标虚拟机列表

在流水线变量中设置多值变量TargetVMs,填入10台目标虚拟机的名称,用逗号分隔(例如vm-web-01,vm-app-03,vm-db-05,...,vm-cache-10)。也可以把这个变量放在变量组里,方便后续批量修改维护。

2. 遍历环境虚拟机并执行匹配任务

使用Azure CLI脚本获取环境内所有虚拟机,再和目标列表比对,通过设置流水线变量控制任务是否执行。以下是YAML流水线示例片段:

variables:
  TargetVMs: 'vm-web-01,vm-app-03,vm-db-05,vm-cache-02,vm-api-04,vm-log-06,vm-mon-07,vm-test-08,vm-stg-09,vm-prod-10'
  EnvironmentName: 'Your-50-VM-Environment'

jobs:
- deployment: RunOnTargetVMs
  displayName: 'Execute task on specified VMs'
  environment: $(EnvironmentName)
  strategy:
    runOnce:
      deploy:
        steps:
        - pwsh: |
            # 转换目标VM列表为数组
            $targetVMs = $env:TargetVMs -split ',' | ForEach-Object { $_.Trim() }
            # 获取当前环境下所有虚拟机名称
            $allVMs = az devops environment resource list --environment-name $(EnvironmentName) --resource-type virtualMachine --query '[].name' -o tsv
            # 匹配当前虚拟机是否在目标列表中
            foreach ($vm in $allVMs) {
              if ($vm -eq $env:AGENT_MACHINENAME) {
                if ($targetVMs -contains $vm) {
                  Write-Host "##vso[task.setvariable variable=IsTargetVM]true"
                } else {
                  Write-Host "##vso[task.setvariable variable=IsTargetVM]false"
                }
              }
            }
          displayName: 'Check if current VM is target'
          env:
            AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
          
        # 仅目标虚拟机执行该任务
        - task: YourSpecificTask@1
          displayName: 'Run designated task'
          condition: eq(variables.IsTargetVM, 'true')
          inputs:
            # 填写你的任务参数,例如脚本路径、执行命令等

3. 权限说明

确保流水线使用的服务账号拥有以下权限:

  • 环境的Environment Reader权限,用于读取虚拟机列表
  • 虚拟机的Deployment Machine Contributor权限,用于在目标机器上执行任务

内容的提问来源于stack exchange,提问作者Muneer Jani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:22:09