管理环境中的 VM 资源

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

本文介绍如何在环境中使用虚拟机(VM)资源来管理跨多台计算机的 Azure Pipelines 部署。 还可以在自己的服务器上安装代理,以便进行滚动部署。

VM 资源可以存在于 开发、测试或生产等环境中。 定义环境后,可以通过部署将 VM 添加到目标。 环境的部署历史记录提供从每个 VM 到管道的可跟踪性。

先决条件

  • 访问连接到管道的源存储库。
  • 在要连接到环境的 VM 上下载和运行可执行脚本的访问权限和权限。
  • 包含环境的 Azure DevOps 项目中的项目管理员或生成管理员 权限 。 有关详细信息,请参阅 管道安全资源
  • 部署池管理员角色,或可供组织使用的目标服务器集。 有关详细信息,请参阅 部署池和环境权限

注意

若要配置部署组代理,或者在注册 VM 环境资源时看到错误,请确保将个人访问令牌(PAT)范围设置为 所有可访问的组织

创建环境

使用以下过程将 VM 资源添加到环境。 可以使用相同的过程来设置物理计算机。

添加 VM 资源

  1. 在 Azure DevOps 项目中,转到 Pipelines>环境,然后选择“创建环境”或新建环境”。

  2. 在第一个“新建环境”屏幕上,添加名称和可选说明

  3. 在“资源”下,选择“虚拟机”,然后选择“下一步”。

    显示添加环境的屏幕截图。

复制注册脚本

VM 资源的代理脚本类似于自承载代理的脚本,并使用相同的命令。 这些脚本包括已登录用户的 Azure DevOps 个人访问令牌(PAT),该令牌在生成脚本三小时后过期。

  1. 在下一个“新建环境”屏幕上,选择操作系统下的 Linux。

  2. 复制 Linux 注册脚本。

    显示添加虚拟机的屏幕截图。

对于添加到环境的所有 Linux VM,该脚本是相同的。 有关安装代理脚本的详细信息,请参阅 自承载 Linux 代理

运行复制的脚本

  1. 选择“关闭,并记下新环境已创建。 若要再次复制脚本,例如,如果 PAT 过期,请选择“ 添加资源”。

    新环境已创建消息的屏幕截图。

  2. 在要向环境注册的每个目标 VM 上运行复制的脚本。

    注意

    如果 VM 上已运行另一个代理,请为代理提供唯一名称以向环境注册。

注册 VM 后,它会显示为环境“ 资源 ”选项卡下的资源。

“资源”选项卡的屏幕截图。

在管道中使用 VM

在 YAML 管道中,可以通过引用 VM 环境来定位 VM。 默认情况下,该作业面向为该环境 resourceName注册的所有 VM。

注意

重试阶段时,部署在所有 VM 上重新运行,而不仅仅是失败的目标。

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
   name: VMenv
   resourceName: VMenv
   resourceType: virtualMachine
  strategy:
     runOnce:
        deploy:   
          steps:
            - script: echo "Hello world"

注意

resourceType (如 virtualMachine 区分大小写)。 大小写不正确会导致找不到匹配的资源。

可以通过在环境中指定这些 resourceNameVM 来部署到环境中的特定 VM。 以下示例仅部署到环境中命名 RESOURCE-PCVMenv VM 资源。

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
    name: VMenv
    resourceType: virtualMachine
    resourceName: RESOURCE-PC # only deploy to the VM resource named RESOURCE-PC
  strategy:
    runOnce:
      deploy:   
          steps:
          - script: echo "Hello world"

有关 YAML 管道部署作业的详细信息,请参阅 YAML 管道架构

添加和管理标记

标记是针对部署环境中特定 VM 集的一种方法。 每个标记限制为 256 个字符。 可以使用的标记数量没有限制。

可以通过为 VM 资源选择“更多操作”,在交互式注册脚本中或通过 UI 为 VM 添加标记或删除标记。

显示设置 VM 标记的屏幕截图。

如果指定多个标记,则管道仅使用包含所有标记的 VM。 以下示例仅面向同时具有标记和prod标记的 windows VM。 只有一个或没有标记的 VM 没有目标。

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
    name: VMenv
    resourceType: virtualMachine
    tags: windows,prod # only deploy to VMs with both windows and prod tags
  strategy:
    runOnce:
      deploy:   
          steps:
          - script: echo "Hello world"

应用部署策略

可以应用部署 strategy 来定义如何推出应用程序。 VM 支持策略 runOncerolling 策略。 有关部署策略和生命周期挂钩的详细信息,请参阅 部署策略

查看部署历史记录

选择“部署”选项卡可查看提交和工作项的完整跟踪信息,以及每个环境和资源的跨管道部署历史记录。

显示 VM 部署视图的屏幕截图。

从环境中删除 VM

若要从 Linux 环境中删除 VM,请在每台计算机上运行以下命令。

./config.sh remove