AzureAD//地形周期错误未定义

AzureAD//地形周期错误未定义,azure,terraform,Azure,Terraform,我想在Azuread Provider中创建应用程序注册,并将applictionid输出用于我的appservice中的配置。每次我计划时,都会收到一条错误消息。如果删除配置行,一切正常 我试图将应用程序注册放在一个模块中并处理输出,但我得到了相同的错误 有人有什么建议吗 //Azure App Registration resource "azuread_application" "appregistration" { name = "${

我想在Azuread Provider中创建应用程序注册,并将applictionid输出用于我的appservice中的配置。每次我计划时,都会收到一条错误消息。如果删除配置行,一切正常

我试图将应用程序注册放在一个模块中并处理输出,但我得到了相同的错误

有人有什么建议吗

//Azure App Registration
  resource "azuread_application" "appregistration" {
  name                       = "${var.state}Site-${var.typ}-ar"
  reply_urls                 = ["https://${azurerm_app_service.appservice.default_site_hostname}/signin-callback"]
  available_to_other_tenants = false
  oauth2_allow_implicit_flow = true
}
resource "azuread_application_password" "AppRegistrationPwd" {
  application_object_id = "${azuread_application.appregistration.id}"
  value                 = "SOMECODE"
  end_date              = "2020-01-01T01:02:03Z"
}
resource "azuread_service_principal" "serviceprincipal" {
  application_id                = "${azuread_application.appregistration.application_id}"
  app_role_assignment_required  = false
}
应用服务

resource "azurerm_app_service" "appservice" {
    name = "${var.state}-Site-${var.typ}-as"
    location = "${var.location}"
    resource_group_name = "${azurerm_app_service_plan.serviceplan.resource_group_name}"
    app_service_plan_id = "${azurerm_app_service_plan.serviceplan.id}"

    site_config {
    dotnet_framework_version = "v4.0"
    scm_type                 = "LocalGit"
  }

    app_settings = {
    "AzureAd:ClientId"  = "${azuread_service_principal.serviceprincipal.application_id}"


  }



  }
错误:

Error: Cycle: module.devcentralhub.azuread_service_principal.serviceprincipal, module.devcentralhub.azurerm_app_service.appservice, module.devcentralhub.azuread_application.appregistration

您的理解与您的评论一样正确,资源
azurerm_应用程序_服务
需要来自资源
azuread_服务主体
application_id
,而资源
azuread_服务主体
需要在
回复URL
中的应用程序服务名称,因此它会导致循环

为了打破这个循环,您可以通过
${var.state}-site-${var.typ}-as.azurewebsites.net
指定
${azurerm\u app\u service.appservice.default\u site\u hostname}
,因为这两个值通常是相同的


在代码中更改为
reply_url=[“https://${var.state}-Site-${var.typ}-as.azurewebsites.net/signin callback”]

我想我明白了。问题是“哪一个”排在第一位。Appservice需要ClientID,而应用程序服务需要Appservice的主URL,对吗?