Как использовать существующие ресурсы из другой группы ресурсов для развертывания в новой группе ресурсов с помощью Terraform - PullRequest
0 голосов
/ 29 мая 2020

Я хочу создать ресурсы в новой группе ресурсов, но хочу использовать виртуальную сеть для тех ресурсов, которые находятся в другой группе ресурсов. Как мне это сделать? Например, я хочу создать redis / postgresql в группе ресурсов A, но хочу использовать виртуальную сеть, которая находится в группе ресурсов B. Возможно ли это?

Это группа ресурсов, из которой я извлекаю 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, который требует vnet, который создается в другом RG-

    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 создается в другой группе ресурсов и перенаправляется в другой. Но я хочу использовать этот vnet. также, если я изменю аргумент resource group name, используемый в модуле, с azurerm_resource_group.main.name на data.azurerm_resource_group.azresourcegroup.name, тогда он создаст redis в 1-й группе ресурсов, которую я не хочу. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 29 мая 2020

Конечно, возможно. Единственное условие - виртуальная сеть должна находиться в том же месте. Затем вы можете процитировать его в коде Terraform через Terraform Data Source azurerm_virtual_network следующим образом:

data "azurerm_virtual_network" "example" {
  name                = "production"
  resource_group_name = "networking"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...