如何通过Azure DevOps Pipeline创建Azure虚拟机?求流程任务及前置条件
通过Azure DevOps Pipeline创建Azure虚拟机的方案
前置条件
- 持有有效Azure订阅,且Azure DevOps配置的**服务主体(Service Principal)**具备虚拟机创建权限(推荐分配
Contributor或Virtual Machine Contributor角色) - Azure DevOps项目已配置Azure资源管理器服务连接,确保Pipeline能正常访问目标Azure订阅
- 若使用自定义镜像或初始化脚本,需提前准备好:存储在Azure Compute Gallery/存储账户的镜像,以及PowerShell/Bash初始化脚本
- 确认目标Azure区域的虚拟机配额充足,避免因配额不足导致创建失败
可用的Pipeline任务/流程
1. ARM模板部署(标准方案)
这是官方推荐的基础设施部署方式,调整配置后可解决之前的失败问题:
- 准备完整的ARM模板:需包含VM及依赖资源(虚拟网络、存储账户、公共IP等),或模板中引用已存在的资源
- 在Pipeline中添加Azure Resource Group Deployment任务:
- 选择已配置的Azure服务连接
- 指定目标资源组(可提前创建,或在模板中加入资源组创建逻辑)
- 上传ARM模板文件和参数文件
- 设置部署模式为
Incremental(避免误删资源组内现有资源)
2. Azure CLI任务(灵活脚本化)
适合需要自定义流程的场景:
- 在Pipeline中添加Azure CLI任务,选择对应操作系统(Windows/Linux)
- 编写CLI命令完成VM创建,示例:
az vm create \ --resource-group myResourceGroup \ --name myVM \ --image Ubuntu2204 \ --admin-username azureuser \ --generate-ssh-keys
- 可搭配其他CLI命令提前创建依赖资源(如虚拟网络、子网)
3. Terraform任务(可选,声明式IaC)
如果习惯用声明式代码管理基础设施:
- 在Pipeline中添加Terraform Installer任务安装指定版本的Terraform
- 依次添加Terraform Init、Terraform Plan、Terraform Apply任务,通过Terraform配置文件定义VM及所有依赖资源
排查之前部署失败的常见原因
- 服务主体权限不足:检查服务主体是否拥有目标资源组的操作权限,是否缺少依赖资源(如存储、网络)的创建权限
- 模板/参数错误:比如镜像名称拼写错误、VM大小在目标区域未提供、管理员密码不符合Azure复杂度要求
- 依赖资源缺失:模板中引用的虚拟网络、子网等未提前创建,且模板未包含这些资源的创建逻辑
- 配额限制:目标区域的VM核心数、公共IP地址等配额不足,可在Azure门户查看并申请配额提升
- 部署模式错误:若使用
Complete模式,会删除资源组内未在模板中定义的资源,易引发冲突
内容的提问来源于stack exchange,提问作者Ch Vamsi
相关产品推荐
相关产品推荐

