提供商错误新 hashcorp/获取提供商

问题描述 投票:0回答:1

地形计划原因:

错误:依赖锁定文件不一致

lock文件中记录的以下依赖选择与当前配置不一致: 提供程序registry.terraform.io/hashicorp/get:此配置需要但未选择版本

要更新锁定的依赖项选择以匹配更改的配置,请运行: terraform 初始化 - 升级

运行 terraform init -upgrade 会出现此错误:

错误:无法查询可用的提供程序包

无法检索提供商 hashicorp/get 的可用版本列表:提供商注册表registry.terraform.io 没有提供商
命名为registry.terraform.io/hashicorp/get

所有模块都应指定其 required_providers,以便外部消费者在使用模块时获得正确的提供者。看看哪个
模块当前依赖于 hashcorp/get,运行以下命令: 地形提供商

terraform 提供商提供

provider[registry.terraform.io/hashicorp/get] as one of the providers

这个提供商是什么?为什么突然出现? 这是一个广泛的 hashcorp 错误吗?

我按照控制台中的 terraform 提示操作,但没有成功。 希望能帮到你

已修复 都是我的错,原因是这样的:

data "get_caller_identity" "current" {}

代替:

data "aws_caller_identity" "current" {}
terraform cloud devops infrastructure-as-code hashicorp
1个回答
0
投票

为了向后兼容尚未支持自动安装第三方提供程序的更旧版本的 Terraform,Terraform 有一些启发式方法来猜测当您未在

required_providers
块中声明提供程序依赖项时的含义:

  • 任何没有
    resource
    块的
    provider
    块都会选择本地名称与资源类型名称的第一部分(直到第一个下划线)匹配的提供程序的默认实例。
  • 如果任何资源与未在
    required_providers
    块中声明的提供程序本地名称关联,Terraform 会猜测您打算使用具有该名称的
    hashicorp/
    命名空间提供程序,因为这就是旧版本 Terraform(之前的版本)的方式根本没有任何命名空间)会表现得很好。

您已经写了

data "get_caller_identity" "current" {}
,所以:

  1. Terraform 注意到此块中没有
    provider
    参数,因此从您的资源类型名称中获取
    get
    前缀,并假设您打算编写
    provider = get
  2. 模块的
    get
    块中没有
    required_providers
    条目,因此 Terraform 假设您正在尝试使用
    hashicorp/get

我猜您可能打算使用来自 aws_caller_identity

 提供商的 
hashicorp/aws
 数据源
。在这种情况下,您需要在
data
块中正确拼写其类型名称:

data "aws_caller_identity" "current" {}

然后启发式方法将正常工作:

  1. 没有
    provider
    参数,并且资源类型名称以“aws”开头,因此 Terraform 假定为
    provider = aws
  2. required_providers
    块不包含本地名称为
    aws
    的条目,因此 Terraform 猜测您的意思是
    hashicorp/aws
© www.soinside.com 2019 - 2024. All rights reserved.