azure 如何将每个值从一个资源块引用/访问到另一个资源块terraform

0yycz8jy  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(141)

我想将一个资源块值引用到另一个资源块。从第一个资源块中,我使用for each来获取应用程序ID,从第二个资源块中,每个块都没有任何ID,但我需要应用程序ID来创建应用程序注册。

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "<=2.39.0"
    }
  }
  required_version = ">= 0.13"
}

data "azuread_client_config" "current" {

}

data "azuread_application" "example" {
  for_each = toset(var.application_ids)
  application_id = each.value
}

resource "azuread_application" "current" {
  display_name = "terraform-sp-${var.display_name}"
  owners       = tolist([data.azuread_application.example[each.value].object_id, data.azuread_client_config.current.object_id])

}

错误

在main.tf第23行的资源“azuread_application”“current”中,在没有for_each │ │的上下文中引用“each”:│ 23:owners = tolist([data.azuread_application.example[each.key].object_id,data.azuread_client_config.current.object_id])“each”对象只能在“module”或“resource”块中使用,并且只能在设置了“for_each”参数时使用。

rta7y2nd

rta7y2nd1#

你应该可以使用splat表达式*concat

owners       = concat(values(data.azuread_application.example)[*].object_id, [data.azuread_client_config.current.object_id])

相关问题