如何使用其他资源组中的现有资源,使用Terraform在新资源组中进行部署

如何使用其他资源组中的现有资源,使用Terraform在新资源组中进行部署,terraform,terraform-provider-azure,terraform0.12+,Terraform,Terraform Provider Azure,Terraform0.12+,我想在一个新的资源组中创建资源,但我想为另一个资源组中的资源使用虚拟网络。我该怎么做?例如,我想在resourcegroupA中创建redis/postgresql,但我想利用resourcegroupB中的虚拟网络。可能吗 这是我从中检索vnet的资源组- resource "azurerm_resource_group" "azresourcegroup" { name = "resourcegroupA" location

我想在一个新的资源组中创建资源,但我想为另一个资源组中的资源使用虚拟网络。我该怎么做?例如,我想在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
    }
我正在使用模块创建需要在其他RG中创建的vnet的redis缓存-

    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。另外,如果我将模块中使用的
resource group name
参数从
azurerm\u resource\u group.main.name
更改为
data.azurerm\u resource\u group.azresourcegroup.name
,那么它将在我不想要的第一个资源组中创建redis。
请帮忙。

当然,这是可能的。唯一的条件是虚拟网络应位于同一位置。然后,您可以通过地形在地形代码中引用它,如下所示:

data "azurerm_virtual_network" "example" {
  name                = "production"
  resource_group_name = "networking"
}

如果我在这里使用模块呢?@SiddhiMorajkar当然是的。Vnet的数据源只是帮助您引用现有的Vnet,它不会影响您想在哪里使用它。因此,您可以在模块中输入其值。模块创建另一个Redis,因为您在其中创建了资源Redis。你只需要在模块中使用它的数据源。你能发布一个示例代码来澄清吗?@SiddhiMorajkar你需要提供你的模块代码,然后我可以告诉你如何做。我已经提供了上面的模块。