无法将使用 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