我正在学习开发地形提供程序。下面是hashicorp制作的精彩教程:https://learn.hashicorp.com/tutorials/terraform/provider-use?in=terraform/providers#create-订单
当我添加required_providers
块时,Terraform init
工作。然而,一旦我添加了资源并执行了terraform apply
,应用程序就会失败,并显示";无法加载插件";错误在这个错误之后,当我运行terraform providers
进行调试时,它将提供程序和资源都列为必需的提供程序。
Terraform版本我正在使用:0.13.5
下面是我使用的代码:
required_providers {
hashicups = {
versions = ["0.3"]
source = "hashicorp.com/edu/hashicups"
}
}
}
resource "haschicups_order" "edu" {
items {
coffee {
id = 3
}
quantity = 2
}
items {
coffee {
id = 2
}
quantity = 2
}
}
output "edu_order" {
value = haschicups_order.edu
}```
```% terraform providers
Providers required by configuration:
.
├── provider[hashicorp.com/edu/hashicups]
└── provider[registry.terraform.io/hashicorp/haschicups]```
您似乎为资源使用了不正确的资源类型名称:您编写的是haschicups_order
而不是hashicups_order
。
因为您还没有用本地名称haschicups
声明一个提供程序,Terraform假设此资源类型必须属于一个名为hashicorp/haschicups
的提供程序,其机制与Terraform允许在不显式声明AWS提供程序的情况下声明aws_instance
资源的机制相同。
如果您将资源类型名称更正为与提供商的本地名称具有相同的前缀,则Terraform应按照您的预期将资源与提供商关联:
resource "hashicups_order" "edu" {
items {
coffee {
id = 3
}
quantity = 2
}
items {
coffee {
id = 2
}
quantity = 2
}
}