环境 - 虚拟机资源

Azure DevOps Services | Azure DevOps Server 2020

使用虚拟机 (VM) 资源来管理使用 YAML 管道跨多台计算机的部署。 VM 资源允许在自己的服务器上安装代理进行滚动部署。

VM 资源连接到 环境。 定义环境后,可以使用部署将 VM 添加到目标。 环境中的部署历史记录视图提供从 VM 到管道的可跟踪性。

先决条件

必须至少拥有基本许可证并访问以下区域:

  • 连接到管道的存储库
  • 要连接到环境的 VM

有关Azure Pipelines安全性的详细信息,请参阅管道安全资源

若要将 VM 添加到环境,必须具有相应部署池的 管理员角色

创建 VM 资源

注意

可以使用此过程通过注册脚本设置物理计算机。

添加 VM 资源的第一步是定义环境。

定义环境

  1. 选择“ 创建环境 ”或“ 新建环境”,具体取决于它是你的第一个环境。
  2. 为环境和说明添加所需的名称 () 。
  3. 保存新环境。

添加资源

  1. 选择环境,然后选择 “添加资源”。

  2. 资源类型选择虚拟机。 然后,选择“下一步” 。

    Add an environment.

  3. 操作系统选择Windows或 Linux。

  4. 复制注册脚本。 如果选择了 Windows,并且选择了 Linux 脚本,则脚本将是 PowerShell 脚本。

    Add a virtual machine.

  5. 在要注册到此环境的每个目标虚拟机上运行复制的脚本。

    • 如果要在Windows上安装,则需要运行 PowerShell 管理员的脚本。
    • 如果要在 Linux 上安装,则需要具有下载和运行可执行脚本的权限。

    注意

    • 已登录用户的个人访问令牌 (PAT) 包含在脚本中。 PAT 将在生成脚本的当天过期。
    • 如果 VM 上已运行任何其他代理,请为 代理 提供唯一名称以向环境注册。
    • 若要了解有关安装代理脚本的详细信息,请参阅自承载 Linux 代理自承载Windows代理。 VM 资源的代理脚本类似于自承载代理的脚本,可以使用相同的命令。
  6. 注册 VM 后,它会显示为 环境选项卡下的 环境资源。

  7. 若要添加更多 VM,请再次复制脚本。 选择“添加resourceVirtual> 计算机”。 对于添加到环境的所有 VM,Windows和 Linux 脚本相同。

  8. 成功安装 VM 脚本后,VM 将显示在环境的资源列表中。

    View resources.

在管道中使用 VM

通过引用环境,在管道中定位 VM。 默认情况下,管道作业针对为环境定义的所有 VM 运行。

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

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

可以从环境中选择特定的虚拟机集,以使用标记接收部署。 例如,如果只想使用 windows 标记部署到资源,请将 tags 参数和值 windows 添加到管道。

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
    name: ContosoDeploy
    resourceType: VirtualMachine
    tags: windows # only deploy to virtual machines with this tag
  strategy:
    runOnce:
      deploy:   
          steps:
          - script: echo "Hello world"

若要了解有关部署作业的详细信息,请参阅 YAML 架构

添加和管理标记

标记提供了一种定位环境中特定 VM 进行部署的方法。 可以将标记作为交互式注册脚本的一部分或通过 UI 添加到 VM。 每个标记限制为 256 个字符。 对可以使用的标记数没有限制。

通过为 VM 资源选择 “更多操作 ”,在 UI 中添加或删除标记。

Set VM tags.

选择多个标记时,包含管道中使用的所有标记的 VM。 例如,此管道面向同时具有标记和prod标记的 windows VM。 如果 VM 只有其中一个标记,则不会将其作为目标。

trigger: 
- master

pool: 
   vmImage: ubuntu-latest

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

应用部署策略

应用部署策略以定义应用程序的推出方式。 runOnce 同时支持 VM 的策略和 rolling 策略。 有关部署策略和生命周期挂钩的详细信息,请参阅 部署作业/部署策略

查看部署历史记录

选择“ 部署 ”选项卡,以便完成提交和工作项的可追溯性,以及每个环境和资源的跨管道部署历史记录。

VMDeployments_view

VMjobs_view

从环境中删除 VM

Windows 环境

若要从Windows环境中删除 VM,请运行以下命令。 确保执行以下任务:

  • 从管理员 PowerShell 命令提示符运行命令
  • 在每个计算机上运行命令
  • 在运行环境注册命令所在的同一文件夹路径中运行该命令
./config.cmd remove

Linux 环境

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

./config.sh remove

已知限制

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