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

Terraform IONOS配置报错:volume块不支持image_name参数

问题描述

本人擅长Ansible,尝试使用Terraform配置IONOS云基础设施,编写了包含数据中心、LAN、多台服务器及交叉连接的配置文件,但所有服务器的volume块中使用image_name参数时均报错,提示该参数不被支持。已查阅官方文档、尝试多种方法甚至借助ChatGPT,问题仍未解决。

配置代码片段

# 示例错误配置
resource "ionoscloud_server" "example" {
  name              = "example-server"
  datacenter_id     = ionoscloud_datacenter.example.id
  cores             = 2
  ram               = 2048
  availability_zone = "ZONE_1"

  volume {
    name       = "example-volume"
    size       = 10
    image_name = "Ubuntu-22.04" # 此处报错:不支持image_name参数
    disk_type  = "SSD"
  }

  nic {
    lan_id       = ionoscloud_lan.example.id
    dhcp         = true
    firewall_active = true
  }
}

错误信息

Error: Unsupported argument

on main.tf line X, in resource "ionoscloud_server" "example":
image_name = "Ubuntu-22.04"

An argument named "image_name" is not expected here.


解决方案

IONOS的Terraform Provider中,volume块不支持直接使用image_name参数,需通过以下两种方式指定系统镜像:

方法1:使用image_id直接指定镜像ID

先通过IONOS云控制台或API查询目标镜像的ID,然后直接在volume块中使用image_id参数:

resource "ionoscloud_server" "example" {
  name              = "example-server"
  datacenter_id     = ionoscloud_datacenter.example.id
  cores             = 2
  ram               = 2048
  availability_zone = "ZONE_1"

  volume {
    name       = "example-volume"
    size       = 10
    image_id   = "a1b2c3d4-e5f6-7890-abcd-1234567890ab" # 替换为实际镜像ID
    disk_type  = "SSD"
  }

  nic {
    lan_id       = ionoscloud_lan.example.id
    dhcp         = true
    firewall_active = true
  }
}

方法2:通过data资源动态获取镜像ID

如果不想硬编码镜像ID,可以使用ionoscloud_image数据资源根据镜像名称查询ID,再引用到volume块中:

# 查询指定名称的镜像
data "ionoscloud_image" "ubuntu" {
  name     = "Ubuntu-22.04"
  type     = "HDD" # 根据实际需求选择HDD/SSD
  location = "de/txl" # 替换为你的数据中心所在区域,比如us/ewr、gb/lhr等
}

resource "ionoscloud_server" "example" {
  name              = "example-server"
  datacenter_id     = ionoscloud_datacenter.example.id
  cores             = 2
  ram               = 2048
  availability_zone = "ZONE_1"

  volume {
    name       = "example-volume"
    size       = 10
    image_id   = data.ionoscloud_image.ubuntu.id # 引用查询到的镜像ID
    disk_type  = "SSD"
  }

  nic {
    lan_id       = ionoscloud_lan.example.id
    dhcp         = true
    firewall_active = true
  }
}

注意事项

  • 确保data.ionoscloud_image中的name、type、location参数与IONOS云平台上的镜像信息完全匹配,否则可能查询不到结果。
  • 若使用自定义镜像,需确保镜像已存在于目标数据中心所在的区域,且权限配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:12:35