Terraform:来自 azurerm_subscriptions 的所有 Azure 订阅

Terraform: all Azure subscriptions from azurerm_subscriptions

早上好,

我正在使用 Terraform 0.12 和 Azure Provider 2.0.0。我有以下块来检索所有以“sub-”开头的订阅:

data "azurerm_subscriptions" "mgt" {
    display_name_prefix = "sub-"
}

现在我想以某种方式从这个对象自动创建不同的“azurerm_subscription”对象。有什么方法可以遍历所有这些订阅并创建适当的“azurerm_subscription”对象吗?

谢谢!

您可以找到您订阅的索引,然后参考该索引:

data "azurerm_subscriptions" "available" {
}

locals {
  subscription_index = index(data.azurerm_subscriptions.available.subscriptions.*.display_name, "mysubscription")
}

output "azurerm_subscription" {
  value = element(data.azurerm_subscriptions.available.subscriptions, local.subscription_index)
}

您还可以从“azurerm_subscriptions”创建地图。 然后使用 for_each 创建“azurerm_subscription”,并使用名称引用特定数据:

locals {
  subscriptions_map = {
    for obj in data.azurerm_subscriptions.available.subscriptions.* : obj.display_name => obj
  }
}

data "azurerm_subscription" "sub" {
  for_each = local.subscriptions_map

  subscription_id     = each.value.subscription_id
}

output "data" {
  value = data.azurerm_subscription.sub["mysubscription"].subscription_id
}