如何使用其他资源组中的现有资源,使用Terraform在新资源组中进行部署
我想在一个新的资源组中创建资源,但我想为另一个资源组中的资源使用虚拟网络。我该怎么做?例如,我想在resourcegroupA中创建redis/postgresql,但我想利用resourcegroupB中的虚拟网络。可能吗 这是我从中检索vnet的资源组-如何使用其他资源组中的现有资源,使用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
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你需要提供你的模块代码,然后我可以告诉你如何做。我已经提供了上面的模块。