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

如何为单个Terraform资源块使用不同版本的hashicorp/google provider

实现单个Terraform资源使用不同版本的Google Provider

可以实现这个需求,核心是利用Terraform 0.13及以上版本支持的多Provider实例别名功能,具体操作步骤如下:

1. 更新Provider配置文件(provider.tf)

在原有的默认Google Provider基础上,新增一个带别名的Provider实例,指定使用4.31.0版本:

terraform {
  required_version = ">= 0.13.0"
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = ">= 3.45, <= 3.90.0"
    }
    google_v4 = {
      source  = "hashicorp/google"
      version = "4.31.0"
      alias   = "v4"
    }
  }
}

# 默认Provider(3.90.0版本)的配置,保持原有设置即可
provider "google" {
  # 示例配置,根据你的实际环境调整
  credentials = file(var.credentials_path)
  project     = var.project_id
  region      = var.region
}

# 带别名的v4版本Provider配置,需与默认Provider保持一致的认证/项目信息
provider "google" {
  alias        = "v4"
  credentials  = file(var.credentials_path)
  project      = var.project_id
  region       = var.region
}

2. 修改目标资源块指定使用v4版本Provider

在google_storage_bucket "cdn-bucket"资源块中添加provider字段,指定使用别名v4的Provider实例:

resource "google_storage_bucket" "cdn-bucket" {
  provider      = google.v4 # 明确指定使用4.31.0版本的Provider
  project       = var.project_id
  name          = "cdn-${var.project_id}"
  location      = "US"
  storage_class = "MULTI_REGIONAL"
}

注意事项

  • 未指定provider字段的其他资源会默认使用原有的3.90.0版本Provider,无需额外修改
  • 确保两个Provider实例的认证信息、项目、区域等配置一致,避免资源被创建到错误环境
  • 配置完成后执行terraform init,Terraform会自动下载3.90.0和4.31.0两个版本的Provider,确认初始化成功后即可正常使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:15:54