我正在尝试创建一个已经部署到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的文档,但没有什么帮助...
1条答案
按热度按时间u7up0aaq1#
出现问题的原因是我没有在模块中指定提供程序。
这是我的结构:
resources "azapi_update_resource" ...
在modules/main.tf
中,provider "azapi"...
在./providers.tf
中。在this answer中执行以下步骤后,我在modules
目录中创建了一个新的providers.tf
并添加了:这就解决了问题。
在运行
terraform providers
命令后,我得到了以下内容:因此,您可以看到
module.application_registrations
指的是不存在的hashicorp/azapi
。长话短说;将
providers.tf
添加到模块目录中并将azapi
添加到模块目录中已解决此问题!