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