0

如何从不同目录中的模块获取数据。我在此目录下有一个名为的目录,我有两个名为和modules的子目录。在目录中,我拥有在 GCP 中创建实例模板的所有文件,并且我能够成功地从中创建模板。现在我想在另一个目录中使用模板的名称,我正在尝试从现有模板创建一个实例。但是,如果我使用模块并提及我的源代码,因为它要求我创建一个新模板的变量。但我想使用现有的。templateinstance-from-templatetemplateinstance-from-templatemodules/template

我已经outputs.tf在模板中使用和使用了模块,假设它可以帮助我获取参数。并尝试使用这样的东西

source_instance_template = "${module.template.template-name}"

modules->template->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}"
}


modules->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.
4

0 回答 0