环境 – 虚拟机资源
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
使用虚拟机 (VM) 资源通过 YAML 管道管理跨多台计算机的部署。 VM 资源允许你在自己的服务器上安装代理以进行滚动部署。
VM 资源连接到环境。 定义环境后,可以通过部署将 VM 添加到目标。 环境中的部署历史视图提供从 VM 到管道的可跟踪性。
先决条件
必须至少拥有基本许可证并可访问以下区域:
- 已连接到管道的存储库
- 要连接到环境的 VM
有关 Azure Pipelines 安全性的详细信息,请参阅管道安全资源。
若要将 VM 添加到环境,你必须对相应部署池具有管理员角色。 部署池是组织可用的一组目标服务器。 详细了解部署池和环境权限。
注意
如果你正在配置部署组代理,或者在注册 VM 环境资源时遇到错误,则必须将 PAT 范围设置为“所有可访问组织”。
创建 VM 资源
注意
可以使用相同的过程通过注册脚本来设置物理计算机。
添加 VM 资源的第一步是定义环境。
定义环境
- 选择“创建环境”或“新建环境”,具体取决于这是否为你的第一个环境。
- 为环境添加名称(必需)和说明。
- 保存新环境。
添加资源
选择你的环境,然后选择“添加资源”。
为“资源类型”选择“虚拟机”。 然后,选择“下一步”。
为“操作系统”选择“Windows”或“Linux”。
复制注册脚本。 如果你选择了“Windows”,则该脚本是一个 PowerShell 脚本;如果选择了“Linux”,则该脚本是一个 Linux 脚本。
在要注册到此环境的每个目标虚拟机上运行复制的脚本。
- 如果在 Windows 上安装,则需要以 PowerShell 管理员身份运行该脚本。
- 如果在 Linux 上安装,则需要有权下载和运行可执行脚本。
注意
- 已登录用户的个人访问令牌 (PAT) 会包含在该脚本中。 PAT 在生成脚本之日过期。
- 如果 VM 上已有任何其他正在运行的代理,请为代理提供唯一的名称以注册到环境。
- 若要详细了解如何安装代理脚本,请参阅自托管 Linux 代理和自托管 Windows 代理。 VM 资源的代理脚本类似于自托管代理的脚本,并且你可以使用相同的命令。
注册 VM 后,它会在环境的“资源”选项卡下显示为环境资源。
要添加更多 VM,请再次复制脚本。 选择“添加资源”>“虚拟机”。 对于添加到环境中的所有 VM,Windows 和 Linux 脚本是相同的。
成功安装 VM 脚本后,你的 VM 将显示在环境的资源列表中。
在管道中使用 VM
通过引用环境将管道中的 VM 设为目标。 默认情况下,管道作业将针对使用 resourceName
为环境定义的所有 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
值区分大小写。 指定不正确的大小写会导致在环境中找不到匹配的资源。 有关详细信息,请参阅 YAML 架构。
可以通过按 resourceName
指定虚拟机,从环境中选择仅接收部署的特定虚拟机。 例如,若要将部署目标限定为 VMenv
环境中名为 USHAN-PC
的虚拟机资源,请添加 resourceName
参数并为其指定值 USHAN-PC
。
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- deployment: VMDeploy
displayName: Deploy to VM
environment:
name: VMenv
resourceType: virtualMachine
resourceName: USHAN-PC # only deploy to the VM resource named USHAN-PC
strategy:
runOnce:
deploy:
steps:
- script: echo "Hello world"
若要详细了解部署作业,请参阅 YAML 架构。
添加和管理标记
标记提供了一种在部署环境中将一组特定 VM 设为目标的方式。 可以将标记作为交互式注册脚本的一部分添加到 VM,或者通过 UI 添加。 每个标记限制为 256 个字符。 可以使用的标记数量没有限制。
通过在 UI 中的资源视图中选择 VM 资源对应的“更多操作”来添加或删除标记。
选择多个标记时,包含所有标记的 VM 将在管道中使用。 例如,此管道以具有 windows
和 prod
标记的 VM 为目标。 如果 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 virtual machines with both windows and prod tags
strategy:
runOnce:
deploy:
steps:
- script: echo "Hello world"
应用部署策略
应用部署策略来定义应用程序的推出方式。VM 的 runOnce
策略和 rolling
策略均受支持。
有关部署策略和生命周期挂钩的详细信息,请参阅部署作业/部署策略。
查看部署历史记录
选择“部署”选项卡可查看提交和工作项的完整跟踪信息,以及每个环境和资源的跨管道部署历史记录。
从环境中删除 VM
Windows 环境
若要从 Windows 环境中删除 VM,请运行以下命令。 确保执行以下任务:
- 从管理员 PowerShell 命令提示符运行命令
- 在每台计算机上运行命令
- 在运行环境注册命令的同一文件夹路径中运行命令
./config.cmd remove
Linux 环境
若要从 Linux 环境中删除 VM,请在每台计算机上运行以下命令。
./config.sh remove
已知的限制
重试某个阶段时,将在所有 VM 而不仅仅是失败的目标上重新运行部署。
相关文章
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈