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

如何使用Terraform在OVH上创建私有网络/子网并解决IP分配异常?

在OVH用Terraform创建私有网络/子网及IPv4分配问题解决指南

我来帮你梳理下正确的配置方式,以及解决你遇到的私有网络接口无法获取IPv4的问题——这个坑确实不少人踩过,你提到的文档里的问题核心其实是资源选型和配置细节没到位。

先搞清楚:选OVH专属资源还是OpenStack通用资源?

  • 优先用ovh_publiccloud_private_network_subnet:这是OVH为自己的公有云量身定做的资源,和OVH内部的网络服务完全适配,能避免很多通用OpenStack资源带来的兼容性问题,比如你遇到的IP分配失败。
  • 谨慎用openstack_networking_subnet_v2:这是通用OpenStack子网资源,虽然能在OVH的OpenStack环境运行,但OVH对OpenStack做了不少定制化修改,混用的话很容易出现DHCP不生效、IP无法分配的情况——这也是你提到的文档里指出的问题根源。

正确配置示例(OVH专属资源,推荐)

下面是一套完整的、能确保IP正常分配的配置,涵盖私有网络、子网、实例关联的全流程:

# 初始化OVH Provider
provider "ovh" {
  endpoint           = "ovh-eu" # 按需调整区域:ovh-us/ovh-ca等
  application_key    = var.ovh_app_key
  application_secret = var.ovh_app_secret
  consumer_key       = var.ovh_consumer_key
}

# 创建私有网络
resource "ovh_publiccloud_private_network" "private_net" {
  service_name = var.ovh_service_name # 你的OVH服务名称(在控制台可查)
  name         = "internal-private-net"
  region       = "GRA" # 区域要和后续资源一致,比如SBG/BHS
}

# 创建子网(关键:开启DHCP)
resource "ovh_publiccloud_private_network_subnet" "private_subnet" {
  service_name         = var.ovh_service_name
  private_network_id   = ovh_publiccloud_private_network.private_net.id
  region               = "GRA"
  cidr                 = "192.168.3.0/24"
  ip_version           = 4
  enable_dhcp          = true # 必须开启,否则实例无法自动获取IPv4
  gateway_ip           = "192.168.3.1"
  dns_nameservers      = ["213.186.33.99", "213.186.33.100"] # OVH官方DNS
}

# 创建云实例并关联私有网络
resource "ovh_publiccloud_instance" "web_server" {
  service_name  = var.ovh_service_name
  region        = "GRA"
  flavor_id     = "s1-2" # 按需选择实例规格
  image_id      = "Ubuntu_22.04" # 镜像ID可从OVH控制台获取
  name          = "internal-web-server"

  # 关联私有网络网卡
  network_interface {
    network_id = ovh_publiccloud_private_network.private_net.id
    # 可选:指定静态IP,不填则由DHCP自动分配
    # ip         = "192.168.3.10"
  }
}

解决IPv4未分配的核心要点

你遇到的接口没拿到IP的问题,大概率是以下某个细节没做好:

  1. DHCP未开启:子网配置里enable_dhcp = true是必须的,没有这个,OVH的DHCP服务不会给实例分配IP;如果用静态IP,要确保IP在子网CIDR范围内,且没有冲突。
  2. 资源类型不统一:别混用OVH专属资源和OpenStack通用资源(比如用OVH的私有网络搭配OpenStack的子网),OVH的网络服务对自家资源的识别度更高,混用容易导致IP分配失败。
  3. 区域完全一致:私有网络、子网、实例的region必须完全相同,OVH的每个区域都是独立的网络环境,跨区域无法关联。

可选:OpenStack通用资源的适配方案(不推荐)

如果你确实需要用openstack_networking_subnet_v2,一定要确保子网关联的是OVH的私有网络,并且正确配置DHCP选项,同时OpenStack Provider要指向OVH的认证端点:

# 配置OpenStack Provider(适配OVH环境)
provider "openstack" {
  user_name   = var.openstack_user
  tenant_name = var.openstack_tenant
  password    = var.openstack_password
  auth_url    = "https://auth.cloud.ovh.net/v3" # OVH官方OpenStack认证地址
  region      = "GRA"
}

# 引用已创建的OVH私有网络
data "ovh_publiccloud_private_network" "existing_net" {
  service_name = var.ovh_service_name
  name         = "internal-private-net"
  region       = "GRA"
}

# 创建OpenStack子网
resource "openstack_networking_subnet_v2" "openstack_subnet" {
  name       = "openstack-managed-subnet"
  network_id = data.ovh_publiccloud_private_network.existing_net.id
  cidr       = "192.168.4.0/24"
  ip_version = 4

  enable_dhcp = true
  gateway_ip  = "192.168.4.1"
  dns_nameservers = ["213.186.33.99", "213.186.33.100"] # 必须配置OVH DNS,否则可能无法解析
}

还是那句话,尽量用OVH专属资源,能省很多不必要的麻烦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:21:52