无法将使用 git 源的 Terraform 模块的输出值传递回调用方
Unable to pass output values from a Terraform module which uses a git source back to the caller
我有一个用于构建 GCP 虚拟机的 Terraform 模块。该模块位于 ../modules/vm/main.tf。我遇到的问题是在 main 内部,我还有一个指向 github 存储库的源设置。因此,当我从我的根 main.tf 模块调用我的 ../modules/vm/main.tf 模块时,我无法从 git 源捕获到 returns 并传递它们一路回到我的根 main.tf.
所以基本上,../modules/vm/main.tf 的 git 来源 returns 输出,该输出需要 returned 到 ./main.tf .我在这一点上失败了,需要一些帮助。
这里是根目录中的main.tf:
module "vm1" {
source = ../modules/vm/main.tf
vm.name = var.vm1name
vm.size = var.vm1.size
}
这是 ../modules/vm/variables.tf 文件中的内容:
variable "name" {
type = "string"
description = "The name of the VM."
}
variable "size" {
type = "string"
description = "The instance size."
}
这是 ../modules/vm/main.tf
中 main.tf 文件中的内容
module "virtual_machine" {
source = "git::https://github.myorg.com/repository?ref=v1.0"
name = var.name
size = var.size
}
“git::https://github.myorg.com/repository?ref=v1.0"的输出值之一是虚拟机的IP地址。获取输出似乎没有问题,但我需要将此输出从 ../modules/vm/main.tf 发送回 ./main.tf 因为在我的根 main.tf 中使用的下一个模块需要分配给 VM 的 IP 地址。这就是我所在的位置遇到这个问题,我不知道如何将 returned IP 地址放入我的 outputs.tf 文件中 return 到我的根 main.tf.
我希望这是有道理的。
您应该在模块中创建一个 outputs.tf
文件
路径:../modules/vm/outputs.tf
假设https://github.myorg.com/repository?ref=v1.0模块ip地址的导出变量名为ip_address
output "ip_addres" {
description = "Ip address of VM"
value = module.virtual_machine.ip_address
}
然后在你的main.tf
你可以参考ip地址
module.vm1.ip_address
我有一个用于构建 GCP 虚拟机的 Terraform 模块。该模块位于 ../modules/vm/main.tf。我遇到的问题是在 main 内部,我还有一个指向 github 存储库的源设置。因此,当我从我的根 main.tf 模块调用我的 ../modules/vm/main.tf 模块时,我无法从 git 源捕获到 returns 并传递它们一路回到我的根 main.tf.
所以基本上,../modules/vm/main.tf 的 git 来源 returns 输出,该输出需要 returned 到 ./main.tf .我在这一点上失败了,需要一些帮助。
这里是根目录中的main.tf:
module "vm1" {
source = ../modules/vm/main.tf
vm.name = var.vm1name
vm.size = var.vm1.size
}
这是 ../modules/vm/variables.tf 文件中的内容:
variable "name" {
type = "string"
description = "The name of the VM."
}
variable "size" {
type = "string"
description = "The instance size."
}
这是 ../modules/vm/main.tf
中 main.tf 文件中的内容module "virtual_machine" {
source = "git::https://github.myorg.com/repository?ref=v1.0"
name = var.name
size = var.size
}
“git::https://github.myorg.com/repository?ref=v1.0"的输出值之一是虚拟机的IP地址。获取输出似乎没有问题,但我需要将此输出从 ../modules/vm/main.tf 发送回 ./main.tf 因为在我的根 main.tf 中使用的下一个模块需要分配给 VM 的 IP 地址。这就是我所在的位置遇到这个问题,我不知道如何将 returned IP 地址放入我的 outputs.tf 文件中 return 到我的根 main.tf.
我希望这是有道理的。
您应该在模块中创建一个 outputs.tf
文件
路径:../modules/vm/outputs.tf
假设https://github.myorg.com/repository?ref=v1.0模块ip地址的导出变量名为ip_address
output "ip_addres" {
description = "Ip address of VM"
value = module.virtual_machine.ip_address
}
然后在你的main.tf
你可以参考ip地址
module.vm1.ip_address