Azure Terraform集线器和分支具有多个订阅

Azure Terraform集线器和分支具有多个订阅,azure,terraform,terraform-provider-azure,Azure,Terraform,Terraform Provider Azure,我想在多个订阅中使用terraform部署Azure landingzone,集线器网络在订阅1中应该有Azure防火墙,每个分支都有不同的订阅,我需要4个分支,它们将在4个单独的订阅中部署 有人能帮我理解一下逻辑吗?如何编写terraform。对于您的需求,以下是您可以遵循的规则。轮毂和轮辐通过VNet连接。根据描述: 虚拟网络可以是相同的订阅,也可以是不同的订阅。 当您在不同订阅中对等虚拟网络时,两者 订阅可以关联到相同或不同的Azure Active 目录租户 因此,您可以在两个不同的订阅

我想在多个订阅中使用terraform部署Azure landingzone,集线器网络在订阅1中应该有Azure防火墙,每个分支都有不同的订阅,我需要4个分支,它们将在4个单独的订阅中部署


有人能帮我理解一下逻辑吗?如何编写terraform。

对于您的需求,以下是您可以遵循的规则。轮毂和轮辐通过VNet连接。根据描述:

虚拟网络可以是相同的订阅,也可以是不同的订阅。 当您在不同订阅中对等虚拟网络时,两者 订阅可以关联到相同或不同的Azure Active 目录租户

因此,您可以在两个不同的订阅中对等VNET。我假设您使用Azure CLI作为身份验证,您的帐户已经登录,并且在这两个订阅中都有足够的权限。下面是一个示例代码:

provider "azurerm" {
  features {}

  alias = "subscription1"

  subscription_id = "xxxxxxx"
}

provider "azurerm" {
  features {}

  alias = "subscription2"

  subscription_id = "xxxxxxx"
}

data "azurerm_virtual_network" "remote" {
  provider = azurerm.subscription1
  name = "remote_vnet_name"
  resource_group_name = "remote_group_name"
}

data "azurerm_virtual_network" "vnet" {
  provider = azurerm.subscription2
  name = "vnet_name"
  resource_group_name = "group_name"
}

resource "azurerm_virtual_network_peering" "peering" {
  provider = azurerm.subscription2
  name                         = "${data.azurerm_virtual_network.vnet.name}-to-${data.azurerm_virtual_network.remote.name}"
  resource_group_name          = "group_name"
  virtual_network_name         = data.azurerm_virtual_network.vnet.name
  remote_virtual_network_id    = data.azurerm_virtual_network.remote.id
  allow_virtual_network_access = true
  allow_forwarded_traffic      = true

  # `allow_gateway_transit` must be set to false for vnet Global Peering
  allow_gateway_transit = false
}

resource "azurerm_virtual_network_peering" "peering1" {
  provider = azurerm.subscription1
  name                         = "${data.azurerm_virtual_network.remote.name}-to-${data.azurerm_virtual_network.vnet.name}"
  resource_group_name          = "remote_group_name"
  virtual_network_name         = data.azurerm_virtual_network.remote.name
  remote_virtual_network_id    = data.azurerm_virtual_network.vnet.id
  allow_virtual_network_access = true
  allow_forwarded_traffic      = true

  # `allow_gateway_transit` must be set to false for vnet Global Peering
  allow_gateway_transit = false
}

VNet窥视始终带有一对。因此,您需要为对等中不同订阅中的每个VNet创建一个对等。此示例仅显示如何在不同订阅中为两个VNET创建对等。然后,您可以在Terraform中按照自己的意愿完成整个架构。

欢迎使用Stackoverflow!请使用所需的行为、特定问题和代码更新您的问题。看:还有问题吗?这能解决你的问题吗?是的,这是好查尔斯。但是我想通过azure devops管道部署这个terraform模板。在这种情况下,如何管理订阅?@G.Prashanth我想也是这样。charles,当我采用同样的方法时,我会遇到身份验证错误。@G.Prashanth您会遇到什么错误?权限被拒绝?嗨,查尔斯,我收到的消息是“出错”消息,就是这样。我没有收到具体的错误消息,azure devops管道中的terraform plan出现错误。