4

我想使用一个资源/模块的输出变量作为另一个资源/模块的输入。那可能吗?在这里,我希望根目录中的“outputs.tf”的输出值用作模块的“main.tf”中的输入。

    root
    |--main.tf
    |--vars.tf
    |--outputs.tf
    |---module
         |--main.tf
         |--vars.tf
4

2 回答 2

2

当然可以。您无需再做任何事情。像往常一样做。这是一个例子:

main.tf
├── rg
│   ├── output.tf
│   └── rg.tf
└── vnet
    ├── output.tf
    └── vnet.tf

您创建模块rgvnet照此执行。设置您需要的输出。在这里我设置了输出rg_namerg_location. 我还根据需要设置变量rg_namerg_location模块vnet。然后 main.rf 显示在这里:

provider "azurerm" {
  features {}
}

module "rg" {
  source = "./rg"

  rg_name = "charlesTerraform"
}

module "vnet" {
  source = "./vnet"

  rg_name = module.rg.rg_name
  rg_location = module.rg.rg_location
}

output "vnet" {
  value = module.vnet.vnet
}

你看,我使用模块的输出作为模块rg的输入vnet。希望它可以帮助您了解 Terraform 模块。

更新:

当结构是你所说的事情时,也是如此。您只需要将所需的输出输入到模块中。例如:

resource "azurerm_resource_group" "example" {
  name = "xxxxxx"
  location = "xxxx"
}

module "vnet" {
  source = "./modules"

  resource_group = azurerm_resource_group.example.name
}

这只是一个示例,但它向您展示了如何实现它。希望你能理解。

于 2020-03-31T01:59:51.830 回答
0

我认为您可以使用 terraform output 命令将输出值插入到其他方式作为变量。

请参阅此 terraform 文档https://www.terraform.io/cli/commands/output

于 2021-12-24T02:53:16.470 回答