You need to enable JavaScript to run this app. 如何通过Terraform基于Azure共享镜像库自定义镜像跨资源组部署虚拟机
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Terraform基于Azure共享镜像库自定义镜像跨资源组部署虚拟机

操作界面截图

基于共享镜像库自定义镜像通过Terraform部署到全新资源组的实现方法

前置准备

  • 确认Terraform AzureRM Provider版本不低于2.40.0,该版本原生支持共享镜像作为虚拟机源的配置,低版本无法识别相关参数
  • 提前收集共享镜像的完整路径信息:订阅ID、共享镜像库所在原资源组名称、共享镜像库名、自定义镜像定义名、计划使用的具体镜像版本号
  • 确认Terraform绑定的身份对共享镜像资源有只读权限,无需为目标新建资源组单独配置镜像访问授权

核心配置调整

对比已掌握的常规公共镜像虚拟机部署脚本,仅需修改两处配置即可实现目标,无需重构脚本框架:

  • 在脚本中新增独立的资源组定义,指定全新资源组的名称、部署区域,Terraform会自动完成该资源组的创建,无需提前在Azure控制台手动操作
  • 替换原虚拟机配置中公共镜像的镜像源参数,直接引用共享镜像的完整资源ID,替换参考代码:
# 原有公共镜像配置(以Ubuntu为例)
# storage_image_reference {
#   publisher = "Canonical"
#   offer     = "0001-com-ubuntu-server-jammy"
#   sku       = "22_04-lts"
#   version   = "latest"
# }
# 替换为共享镜像配置
storage_image_reference {
  id = "/subscriptions/<替换为你的订阅ID>/resourceGroups/<替换为共享镜像所在原资源组名>/providers/Microsoft.Compute/galleries/<替换为你的共享镜像库名称>/images/<替换为你的自定义镜像定义名称>/versions/<替换为你要使用的镜像版本号>"
}
  • 把虚拟机依赖的所有配套资源(虚拟网络、子网、公网IP、网卡、OS磁盘)全部关联到前面定义的全新资源组ID下,保证整个部署链路在新资源组内闭环,不跨资源组混用现有资源

踩坑注意事项

  • 镜像ID必须精确到具体的镜像版本层级,不能只填到镜像定义层级,否则Terraform会报资源不存在的错误
  • 确认目标虚拟机的部署区域存在对应镜像版本的副本,跨区域部署时需要先在共享镜像配置中为目标区域添加镜像副本
  • 部署完成后,自定义镜像本身依然保留在原有的共享镜像库资源组中,新资源组内仅存放本次创建的虚拟机及配套运行资源,不会重复存储镜像文件产生额外成本

内容的提问来源于stack exchange,提问作者Pirvu Georgian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 08:27:01