无法检索提供程序hashicorp/azapi(Azure/azapi)的可用版本列表

cgh8pdjw  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(111)

我正在尝试创建一个已经部署到Azure的应用程序注册的Application ID URI,并使用azapi作为应用程序ID URI将是应用程序自己的application_id(即api://[app_id])。所以我试图通过azapi来实现这一点。
但是,当我运行terraform init -upgrade时,我得到以下错误:

│ Error: Failed to query available provider packages
│
│ Could not retrieve the list of available versions for provider hashicorp/azapi: provider registry registry.terraform.io does not have a provider  
│ named registry.terraform.io/hashicorp/azapi
│
│ Did you intend to use azure/azapi? If so, you must specify that source address in each module which requires that provider. To see which modules  
│ are currently depending on hashicorp/azapi, run the following command:
│     terraform providers

我的provider.tf文件如下:

terraform {
  required_providers {
  azapi = {
    source = "Azure/azapi"
  }
  azuread = {
    source = "hashicorp/azuread"
  }
  azurerm = {
    source = "hashicorp/azurerm"
  }
}
backend "azurerm" {
  #..... #necessary info
  }
}

provider "azuread" {
  tenant_id       = "tenant_id"
}

provider "azapi" {
  subscription_id = "subscription_id"
  tenant_id       = "tenant_id"
}

main.tf如下(其中app_reg已经定义):

resource "azapi_update_resource" "update_app_reg" {
type = "Microsoft.Web/sites@2022-03-01"
name = "app-reg"
parent_id = azuread_service_principal.app_reg_service_principal.object_id

# Update Application ID URI
body = jsonencode({
"properties" = {
  "identifierUris" = [
    "api://${azuread_application.app_reg.application_id}"
    ]
  }
})

depends_on = [azuread_application.app_reg]
}

当我删除resource "azapi_update_resource" .........时,terraform init -upgrade成功运行。然而,当我离开它的定义,因为它是,我得到上面的错误。
我已经定义了提供者,我不确定我做错了什么。任何帮助将不胜感激。
PS:我已经检查了this post,微软关于这个和hashicorp documentation about this的文档,但没有什么帮助...

u7up0aaq

u7up0aaq1#

出现问题的原因是我没有在模块中指定提供程序。
这是我的结构:

.
├── providers.tf
├── main.tf
├── modules
    ├── main.tf

resources "azapi_update_resource" ...modules/main.tf中,provider "azapi"..../providers.tf中。在this answer中执行以下步骤后,我在modules目录中创建了一个新的providers.tf并添加了:

terraform {
 required_providers {
  azapi = {
   source = "Azure/azapi"
   }
  }
}

这就解决了问题。
在运行terraform providers命令后,我得到了以下内容:

.
├── provider[registry.terraform.io/azure/azapi]
├── provider[registry.terraform.io/hashicorp/azuread]
├── provider[registry.terraform.io/hashicorp/azurerm]
├── module.application_registrations
    ├── provider[registry.terraform.io/hashicorp/azuread]
    ├── provider[registry.terraform.io/hashicorp/azurerm]
    ├── provider[registry.terraform.io/hashicorp/azapi]

因此,您可以看到module.application_registrations指的是不存在的hashicorp/azapi
长话短说;将providers.tf添加到模块目录中并将azapi添加到模块目录中已解决此问题!

相关问题