Terraform 输出变量用作输入变量

Sid*_*kar 5 terraform-provider-azure terraform-modules

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

    root
    |--main.tf
    |--vars.tf
    |--outputs.tf
    |---module
         |--main.tf
         |--vars.tf
Run Code Online (Sandbox Code Playgroud)

Cha*_* Xu 4

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

\n\n
main.tf\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 rg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 output.tf\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 rg.tf\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vnet\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 output.tf\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vnet.tf\n
Run Code Online (Sandbox Code Playgroud)\n\n

您创建模块rgvnet按照它的方式创建。设置您需要的输出。这里我设置了输出rg_namerg_location。我还根据需要在模块中设置了变量rg_name和。然后 main.rf 显示在这里:rg_locationvnet

\n\n
provider "azurerm" {\n  features {}\n}\n\nmodule "rg" {\n  source = "./rg"\n\n  rg_name = "charlesTerraform"\n}\n\nmodule "vnet" {\n  source = "./vnet"\n\n  rg_name = module.rg.rg_name\n  rg_location = module.rg.rg_location\n}\n\noutput "vnet" {\n  value = module.vnet.vnet\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

更新:

\n\n

当结构是你说的时候也是一样的。您只需将需要的输出输入到模块中即可。例如:

\n\n
resource "azurerm_resource_group" "example" {\n  name = "xxxxxx"\n  location = "xxxx"\n}\n\nmodule "vnet" {\n  source = "./modules"\n\n  resource_group = azurerm_resource_group.example.name\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n