You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Terraform基于自定义镜像创建IBM Cloud VSI时遭遇「未找到指定镜像」错误的技术问询

解决Terraform IBM VPC自定义镜像查找失败的问题

首先,你的错误核心原因是把镜像的UUID(唯一ID)当成了显示名称来查询,而非Terraform仅支持公共镜像——IBM VPC的自定义镜像完全可以通过Terraform正常使用,只是你的数据源配置逻辑有误。

为什么会出现No image found错误?

你使用的r010-489ff05b-1494-4a05-8b12-c6f44a958859是自定义镜像的UUID(系统生成的唯一标识),并不是你在IBM Cloud控制台创建镜像时设置的自定义名称。ibm_is_image数据源的name参数需要匹配镜像的显示名称,而非UUID,因此Terraform找不到对应资源。

快速修复方案

根据你的需求,有两种可靠的配置方式:

1. 通过镜像ID直接查询(推荐,更稳定)

修改ibm_is_image数据源,使用id参数指定镜像的UUID,替代原本的name参数:

data "ibm_is_image" "custom_image" {
  id = "r010-489ff05b-1494-4a05-8b12-c6f44a958859"
  # 可选:指定区域确保和VPC/子网所在区域一致,避免跨区域查找失败
  region = local.REGION
}

# Virtual Server Instance
resource "ibm_is_instance" "vsi1" {
  name = "${local.BASENAME}-vsi1"
  vpc = ibm_is_vpc.vpc-instance.id
  keys = [data.ibm_is_ssh_key.ssh_key_id.id]
  zone = local.ZONE
  image = data.ibm_is_image.custom_image.id
  profile = "cx2-2x4"

  primary_network_interface {
    subnet = ibm_is_subnet.subnet1.id
    security_groups = [ibm_is_security_group.sg1.id]
  }
}

2. 通过镜像显示名称查询

如果你偏好使用名称查询,先登录IBM Cloud控制台的VPC镜像页面,找到该自定义镜像的实际显示名称(比如你创建时输入的my-custom-centos-image),再替换name参数的值:

data "ibm_is_image" "custom_image" {
  name = "你的自定义镜像显示名称"
  region = local.REGION
}

额外注意事项

  • 镜像的区域必须与VPC、子网所在区域完全一致,否则即使ID/名称正确也会查找失败,建议显式指定region参数确保匹配。
  • IBM VPC的Terraform provider支持自定义镜像、共享镜像等所有镜像类型,不存在仅支持公共镜像的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 06:04:08