Как получить данные из модуля, который находится в другом каталоге. У меня есть каталог с именем modules
в этом каталоге, у меня есть два подкаталога с именем template
и instance-from-template
. В каталоге template
у меня есть все файлы для создания шаблона экземпляра в GCP, и я успешно могу создать из него шаблон. Теперь я хочу использовать имя шаблона в другом каталоге instance-from-template
, где я пытаюсь создать экземпляр из существующего шаблона. Но если я использую модуль и упоминаю свой источник как modules/template
, он запрашивает у меня переменные для создания нового шаблона. Но я хочу использовать существующий.
Я использовал outputs.tf
и использовал модуль, например, из шаблона, предполагая, что это может помочь мне получить параметры. И пытаюсь использовать что-то вроде этого
source_instance_template = "${module.template.template-name}"
код в модулях-> шаблон-> main.tf
resource "google_compute_instance_template" "appserver" {
name = "${var.templatename}"
description = "This template is used to create app server instances."
tags = ["terraform-gcp", "test"]
labels = {
environment = "${var.env}"
}
instance_description = "${var.description}"
machine_type = "${var.machinetype}"
can_ip_forward = false
scheduling {
automatic_restart = true
on_host_maintenance = "MIGRATE"
}
// Create a new boot disk from an image
disk {
source_image = "${var.templateimage}"
auto_delete = "${var.autodelete}"
boot = true
}
// Use an existing disk resource
network_interface {
network = "${var.templatenetwork}"
}
metadata = {
foo = "bar"
}
service_account {
email = "${var.serviceemail}"
scopes = ["compute-ro", "storage-ro"]
}
lifecycle {
create_before_destroy = true
}
}
output "template-name"{
value = "${google_compute_instance_template.appserver.name}"
}
Код в модулях-> instance-from-template-> main.tf
module template{
source="../template"
}
resource "google_compute_instance_from_template" "tpl" {
name = "instance-from1-template"
zone = "us-central1-a"
source_instance_template = "${module.template.template-name}"
// Override fields from instance template
can_ip_forward = false
labels = {
my_key = "my_value_test"
}
}
ошибка
on instance-from-template.tf line 1, in module "template":
1: module template{
The argument "templatename" is required, but no definition was found.