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

Terraform OCI多区域创建多VCN时第二区域VCN未生成问题如何解决

多区域OCI VCN部署配置修改方案

核心问题原因

你已完成多provider别名配置,但模块内的VCN资源未绑定对应区域的provider,或未针对不同区域单独调用VCN模块,导致仅根区域资源正常创建。

可选修改方案

方案1:单模块多区域资源配置(适合固定区域数量场景)

在VCN模块内部的资源定义中,显式为不同区域的资源绑定对应provider别名:

# 模块内根区域VCN定义
resource "oci_core_vcn" "root_vcn" {
  provider = oci.root
  compartment_id = var.compartment_id
  cidr_block = var.root_vcn_cidr
  display_name = "root-vcn"
  # 其余VCN配置参数
}

# 模块内第二区域VCN定义
resource "oci_core_vcn" "region1_vcn" {
  provider = oci.region1
  compartment_id = var.compartment_id
  cidr_block = var.region1_vcn_cidr
  display_name = "region1-vcn"
  # 其余VCN配置参数
}

配置后执行terraform plan即可看到两个区域的VCN资源变更。


方案2:多次调用单区域模块(推荐,扩展性更强)

该方案无需在模块内硬编码provider别名,后续新增区域仅需新增模块调用即可:

  1. 先修改VCN模块的required_providers配置,移除固定别名声明:
terraform {
  required_providers {
    oci = {
      source = "hashicorp/oci"
      version = ">= 1.0.2"
    }
  }
}
  1. 模块内的VCN资源无需指定provider,保持默认配置即可。
  2. 在根目录下针对不同区域分别调用VCN模块,各自传递对应区域的provider:
# 根区域VCN模块调用
module "vcn_root" {
  source = "./modules/vcn"
  providers = {
    oci = oci.home
  }
  vcn_cidr = "10.0.0.0/16"
  # 其余根区域VCN参数
}

# 第二区域VCN模块调用
module "vcn_region1" {
  source = "./modules/vcn"
  providers = {
    oci = oci.region1
  }
  vcn_cidr = "10.1.0.0/16"
  # 其余第二区域VCN参数
}

校验项

  • 确认var.region1的值为OCI官方合法区域标识符(如ap-singapore-1、us-ashburn-1等),不存在拼写错误。
  • 执行terraform plan后检查输出的资源列表,确认包含对应第二区域的VCN资源,再执行terraform apply即可完成多区域部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:15:04