Как передать выходы из одного модуля в другой? - PullRequest
0 голосов
/ 20 января 2019

У меня есть два модуля.

  1. один называется module-azure-vnet
  2. второй называется module-azure-vm-instance-zabbix-proxy

Я хочу передать выходы измодуль module-azure-vnet к модулю module-azure-vm-instance-zabbix-proxy.Первый модуль работает правильно, но второму нужны входные данные для подсети, группы безопасности и маршрута.

main.tf

module "module-azure-vnet-dtap" {
  source = "/Users/username/project/module-azure-vnet-dtap"
}

variable "subnets_id_wan" {}

module "module-azure-vm-instance-zabbix-proxy" {
  source = "/Users/username/project/module-azure-vm-instance-zabbix-proxy"
  azurerm_subnet = "${module.module-azure-vnet-dtap.azurerm_subnet.wan.id}"
}

Ошибка: ресурс 'azurerm_network_interface.no_public_ip' config: unknownресурс 'azurerm_subnet.wan', на который ссылается переменная azurerm_subnet.wan.id

Ошибка: конфигурация ресурса 'azurerm_network_security_rule.security_rule_default': неизвестный ресурс 'azurerm_network_security_group.wan', на которую ссылается переменная 10_группа_секретных_оценок * имя_объекта_сети_сервисной__группы_оценности ** Ошибка: модуль "module-azure-vm-instance-zabbix-proxy": "azurerm_subnet" не является допустимым аргументом

В модуле module-azure-vnet-dtap

resource "azurerm_subnet" "wan" {
  count                     = "${var.enable_wan_subnet ? 1 : 0}"
  provider                  = "azurerm.base"
  name                      = "${format("%s-%s-%s", var.environment_name, "WAN", "Subnet")}"
  virtual_network_name      = "${azurerm_virtual_network.this.name}"
  resource_group_name       = "${azurerm_resource_group.this.name}"
  address_prefix            = "${cidrsubnet(var.cidr_block,5,count.index)}"
  route_table_id            = "${azurerm_route_table.wan.id}"
  network_security_group_id = "${azurerm_network_security_group.wan.id}"
}

resource "azurerm_network_security_group" "wan" {
  count               = "${var.enable_wan_subnet ? 1 : 0}"
  provider            = "azurerm.base"
  name                = "${format("%s-%s", var.environment_name, "WAN-Subnet-Security-Group")}"
  location            = "${azurerm_resource_group.this.location}"
  resource_group_name = "${azurerm_resource_group.this.name}"
}

output "subnets_id_wan" {
  value = "${azurerm_subnet.wan.*.id}"

  depends_on = [
    "azurerm_subnet.wan",
  ]
}

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Я сам нашел решение, вот вся структура, необходимая для соединения двух модулей.

установка переменных в примере модуля VNET:

variable "resource_group_name" {
      default     = "default_resource_group"
      }

      variable "region_name" {
      default     = "ukwest"
      }

объявление выходных данных:

output "security_groups_id_wan" {
      value = "${element(concat(azurerm_network_security_group.wan.*.id, list("")),0)}"

        depends_on = [
          "azurerm_subnet.wan",
          ]
      }

вам нужны переменные в прокси-модуле zabbix для получения значений>

variable "resource_group_name" {
        default = ""
        }
        variable "resource_group_location" {
        default = ""
        } 

и во внешней папке, где находится main.tf для модулей>

module "module-azure-vm-instance-zabbix-proxy" {
        source = "/Users/username/project/module-azure-vm-instance-zabbix-proxy"
        resource_group_name = "${module.module-azure-vnet-dtap.resource_group_name}"
        resource_group_location = "${module.module-azure-vnet-dtap.resource_group_location}"
        subnets_id_wan = "${module.module-azure-vnet-dtap.subnets_id_wan}"
        security_groups_name = "${module.module-azure-vnet-dtap.security_groups_name_dmz}"
        environment_name = "${module.module-azure-vnet-dtap.environment_name}"
      }

      module module-azure-vnet-dtap {
        source = "/Users/username/project/module-azure-vnet-dtap"
      }
0 голосов
/ 20 января 2019

вы должны ссылаться на вывод так:

"${module.MODULE_NAME.OUTPUT_NAME}"

в вашем случае это должно быть:

"${module.module-azure-vnet-dtap.subnets_id_wan}"

также вы можете получить доступ только к выходам, а не к ресурсам из модуля (afaik).

...