我想使用一个资源/模块的输出变量作为另一资源/模块的输入。那可能吗?在这里,我希望将根目录下“ outputs.tf”的输出值用作模块“ main.tf”中的输入。
root
|--main.tf
|--vars.tf
|--outputs.tf
|---module
|--main.tf
|--vars.tf
答案 0 :(得分:0)
当然可以。而且,您无需执行其他任何操作。照常做。这是一个示例:
main.tf
├── rg
│ ├── output.tf
│ └── rg.tf
└── vnet
├── output.tf
└── vnet.tf
您可以像这样创建模块rg
和vnet
。设置所需的输出。在这里,我设置输出rg_name
和rg_location
。并且我还根据需要在模块rg_name
中设置了变量rg_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
}
这只是一个示例,但是它向您展示了如何实现它。希望你能理解。