在同一 Terraform 模块块中引用两个 Azure 订阅?
Reference two Azure subscriptions within the same terraform module block?
我目前正在使用 terraform 部署 azure 资源,并希望指向与部署 vnet 不同的订阅中的 DDOS 保护计划。代码如下:
resource "azurerm_virtual_network" "example" {
for_each = var.virtual_networks
name = each.value.vnet_name
location = each.value.vnet_location
resource_group_name = data.azurerm_resource_group.this[each.value.resource_group_key].name
address_space = each.value.vnet_address_space
tags = each.value.vnet_tags
ddos_protection_plan {
id = each.value.ddos_protection_plan_id
enable = true
}
}
我已经使用 azure 提供程序引用了其他订阅,以获取整个块将存在于新订阅中的资源。 https://samcogan.com/deploying-to-multiple-azure-subscriptions-with-terraform/
但是 运行 在引用块中的(子?)资源的另一个订阅时遇到麻烦。
TLDR:想在一个子中部署 VNET,在另一个子中参考 ddos 保护计划。可能吗?
是的,您可以在一个子中部署 VNET,在另一个子中参考 ddos 保护计划。您正在遵循正确的文档。抱歉,我无法在我的环境中进行测试,因为我没有其他订阅。
为了允许我们使用另一个订阅,我们将在您将创建 VNET 的同一文件中定义第二个 AzureRM 提供程序。
provider "azurerm" {
alias = "core"
subscription_id = "xxxx-xxxx-xxxx"
}
之后,您可以将 datasoruce
用于您在另一个订阅中创建的 DDOS_Protection_Plan,如下所示
data "azurerm_network_ddos_protection_plan" "example" {
provider = "azurerm.core"
name = azurerm_network_ddos_protection_plan.example.name
resource_group_name = azurerm_network_ddos_protection_plan.example.resource_group_name
}
然后休息你的代码将看起来像这样用 DDOS 引用 Vnet。
resource "azurerm_virtual_network" "example" {
for_each = var.virtual_networks
name = each.value.vnet_name
location = each.value.vnet_location
resource_group_name = data.azurerm_resource_group.this[each.value.resource_group_key].name
address_space = each.value.vnet_address_space
tags = each.value.vnet_tags
ddos_protection_plan {
id = data.azurerm_network_ddos_protection_plan.example.id
enable = true
}
}
我目前正在使用 terraform 部署 azure 资源,并希望指向与部署 vnet 不同的订阅中的 DDOS 保护计划。代码如下:
resource "azurerm_virtual_network" "example" {
for_each = var.virtual_networks
name = each.value.vnet_name
location = each.value.vnet_location
resource_group_name = data.azurerm_resource_group.this[each.value.resource_group_key].name
address_space = each.value.vnet_address_space
tags = each.value.vnet_tags
ddos_protection_plan {
id = each.value.ddos_protection_plan_id
enable = true
}
}
我已经使用 azure 提供程序引用了其他订阅,以获取整个块将存在于新订阅中的资源。 https://samcogan.com/deploying-to-multiple-azure-subscriptions-with-terraform/
但是 运行 在引用块中的(子?)资源的另一个订阅时遇到麻烦。
TLDR:想在一个子中部署 VNET,在另一个子中参考 ddos 保护计划。可能吗?
是的,您可以在一个子中部署 VNET,在另一个子中参考 ddos 保护计划。您正在遵循正确的文档。抱歉,我无法在我的环境中进行测试,因为我没有其他订阅。
为了允许我们使用另一个订阅,我们将在您将创建 VNET 的同一文件中定义第二个 AzureRM 提供程序。
provider "azurerm" {
alias = "core"
subscription_id = "xxxx-xxxx-xxxx"
}
之后,您可以将 datasoruce
用于您在另一个订阅中创建的 DDOS_Protection_Plan,如下所示
data "azurerm_network_ddos_protection_plan" "example" {
provider = "azurerm.core"
name = azurerm_network_ddos_protection_plan.example.name
resource_group_name = azurerm_network_ddos_protection_plan.example.resource_group_name
}
然后休息你的代码将看起来像这样用 DDOS 引用 Vnet。
resource "azurerm_virtual_network" "example" {
for_each = var.virtual_networks
name = each.value.vnet_name
location = each.value.vnet_location
resource_group_name = data.azurerm_resource_group.this[each.value.resource_group_key].name
address_space = each.value.vnet_address_space
tags = each.value.vnet_tags
ddos_protection_plan {
id = data.azurerm_network_ddos_protection_plan.example.id
enable = true
}
}