我想在新资源组中创建资源,但是我想对另一个资源组中的那些资源使用虚拟网络。我该怎么做呢?例如,我想在resourcegroupA中创建redis / postgresql,但我想利用resourcegroupB中的虚拟网络。有可能吗?
这是我从中检索vnet的资源组-
resource "azurerm_resource_group" "azresourcegroup" {
name =
"resourcegroupA"
location = var.resource_group_location
}
#-----CREATING VIRTUAL NETWORK-----
resource "azurerm_virtual_network" "vnet2" {
name = "virtualnetworkA"
location = azurerm_resource_group.azresourcegroup.location
resource_group_name = azurerm_resource_group.azresourcegroup.name
address_space = [var.virtual_network_address_prefix_infra,var.virtual_network_address_prefix]
我在将它用于另一个这样的资源组时检索了它-
data "azurerm_resource_group" "azresourcegroup" {
name = "resoucegroupA"
}
data "azurerm_virtual_network" "vnet2" {
name = "virtualnetworkA"
resource_group_name = data.azurerm_resource_group.azresourcegroup.name
}
我想使用上述虚拟网络,但想在新资源组中创建其他资源,即-
resource "azurerm_resource_group" "main" {
name = "resourcegroupB"
location = var.resource_group_location
}
我正在使用模块来创建Redis缓存,该缓存需要在其他RG-中创建的vnet-
module "rediscache" {
source = "../../modules/rediscache"
prefix = var.prefix
environmentType = var.environmentType
virtual_network_name = var.virtual_network_name
unique_identifier = var.unique_identifier_kube
resource_group_name = azurerm_resource_group.main.name
resource_group_location = var.resource_group_location
redis_subnet_address_prefix = var.redis_subnet_address_prefix
azurerm_virtual_network_name = data.azurerm_virtual_network.vnet2.name
azurerm_log_analytics_workspace_id = azurerm_log_analytics_workspace.workspace.id
}
为简化此操作,在其他资源组中创建了vnet,在另一个资源组中进行了redis。但是我想使用该vnet。另外,如果我将模块中使用的resource group name
参数从azurerm_resource_group.main.name
更改为data.azurerm_resource_group.azresourcegroup.name
,那么它将在我不需要的第一个资源组中创建Redis。
请帮忙。
答案 0 :(得分:0)
当然可以。唯一的条件是虚拟网络应位于同一位置。然后,您可以像这样通过Terraform Data Source azurerm_virtual_network
在Terraform代码中引用它:
data "azurerm_virtual_network" "example" {
name = "production"
resource_group_name = "networking"
}