Terraform输出变量用作输入变量

时间:2020-03-30 10:10:23

标签: terraform-provider-azure terraform-modules

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

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

1 个答案:

答案 0 :(得分:0)

当然可以。而且,您无需执行其他任何操作。照常做。这是一个示例:

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

您可以像这样创建模块rgvnet。设置所需的输出。在这里,我设置输出rg_namerg_location。并且我还根据需要在模块rg_name中设置了变量rg_locationvnet。然后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
}

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