"地形提供程序"命令混淆了提供程序的资源



我正在学习开发地形提供程序。下面是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
}
}

相关内容

最新更新