首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform :如何更新hashicorp/google-beta v3.90.1到v4.0.0

Terraform :如何更新hashicorp/google-beta v3.90.1到v4.0.0
EN

Stack Overflow用户
提问于 2022-09-30 14:07:49
回答 1查看 233关注 0票数 0

我无法解释为什么当我运行terraform init -upgrade时,提供者GoogleV3.90.1总是出现在这里。

查看我的后端文件,它没有指定任何提供程序。

代码语言:javascript
复制
terraform {
}

我有这个规格

代码语言:javascript
复制
provider "google" {
  project = var.project
  region  = var.region
  
  scopes = [
    "https://www.googleapis.com/auth/cloud-platform",
    "https://www.googleapis.com/auth/userinfo.email",
  ]
}

或者模块中类似的东西

代码语言:javascript
复制
module "scc-build-docker" {
  source          = "terraform-google-modules/project-factory/google"
  version         = "~> 10.1"
  (...)
}

> gcloud version
Google Cloud SDK 404.0.0
alpha 2022.09.23
beta 2022.09.23

> terrafom -v
terraform v0.14.11
+ provider registry.terraform.io/hashicorp/archive v2.2.0
+ provider registry.terraform.io/hashicorp/google v3.90.1
+ provider registry.terraform.io/hashicorp/google-beta v3.90.1
+ provider registry.terraform.io/hashicorp/null v3.1.1
+ provider registry.terraform.io/hashicorp/random v3.4.3
+ provider registry.terraform.io/hashicorp/template v2.2.0
+ provider registry.terraform.io/hashicorp/time v0.8.0

我怎样才能将google提供商升级到最后一个呢?

谢谢。

在指定内部versions.tf之后

代码语言:javascript
复制
terraform {
  required_version = "~> 0.14.0"
  
  required_providers {
    google   = "= 4.38.0"
    google-beta = "= 4.38.0"
  }  
}

问题仍然存在

代码语言:javascript
复制
Initializing provider plugins...
- Finding hashicorp/null versions matching ">= 2.1.0"...
- Finding latest version of hashicorp/time...
- Finding latest version of hashicorp/archive...
- Finding latest version of hashicorp/template...
- Finding hashicorp/google versions matching ">= 2.12.0, >= 3.43.0, ~> 3.45, >= 3.50.0, >= 3.53.0, ~> 3.53, < 4.0.0, 4.38.0, < 5.0.0"...
- Finding hashicorp/google-beta versions matching ">= 3.1.0, >= 3.43.0, ~> 3.45, >= 3.50.0, < 4.0.0, 4.38.0, < 5.0.0"...
- Finding hashicorp/random versions matching ">= 2.2.0"...
- Installing hashicorp/null v3.1.1...
- Installed hashicorp/null v3.1.1 (signed by HashiCorp)
- Installing hashicorp/time v0.8.0...
- Installed hashicorp/time v0.8.0 (signed by HashiCorp)
- Installing hashicorp/archive v2.2.0...
- Installed hashicorp/archive v2.2.0 (signed by HashiCorp)
- Installing hashicorp/template v2.2.0...
- Installed hashicorp/template v2.2.0 (signed by HashiCorp)
- Installing hashicorp/random v3.4.3...
- Installed hashicorp/random v3.4.3 (signed by HashiCorp)

Error: Failed to query available provider packages

Could not retrieve the list of available versions for provider
hashicorp/google: no available releases match the given constraints >= 2.12.0,
>= 3.43.0, ~> 3.45, >= 3.50.0, >= 3.53.0, ~> 3.53, < 4.0.0, 4.38.0, < 5.0.0


Error: Failed to query available provider packages

Could not retrieve the list of available versions for provider
hashicorp/google-beta: no available releases match the given constraints >=
3.1.0, >= 3.43.0, ~> 3.45, >= 3.50.0, < 4.0.0, 4.38.0, < 5.0.0

当我删除main.tf文件时,一切看起来都很好。然后,我尝试激活/禁用块,看看哪一个触发了这个问题。因此,实际上,这个块是插件提供程序无法安装的原因。

代码语言:javascript
复制
module "shared" {
  providers = {
    google      = google.impersonated
    google-beta = google-beta.impersonated
  }
  source = "./modules/shared"

  depends_on = [module.projects]

  # Read created projects. Produced map : key is environment key, value is project resource
  target_projects = { for k, v in local.projects : k => merge(v, module.projects[k].project) }

  docker_repositories = local.docker_repositories

  terraform_sa_email = data.google_service_account.terraform_sa.email

  region                     = var.region
  organization_id            = data.google_project.factory_project.org_id
  billing_account            = var.billing_account
  parent_folder              = module.folders.shared_folder.id
  team                       = "scc"
  creator                    = data.google_service_account.terraform_sa.account_id
  controlling_group_name     = local.controlling_group_name
  controlling_group_fullname = local.controlling_group_fullname
}

..。

好的决定..。我必须为模块设置所有最新版本。(如terraform-google-模块/网络/google为例)

EN

回答 1

Stack Overflow用户

发布于 2022-09-30 21:29:35

我认为您可以使用versions.tf文件声明提供程序的版本,并在需要时对其进行升级。

versions.tf文件与GoogleGoogle beta提供程序以及4.38.0版本的示例:

代码语言:javascript
复制
terraform {
  required_version = ">= 0.13.2"

  required_providers {
    google   = "= 4.38.0"
    google-beta = "= 4.38.0"
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73910024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档