Sid*_*kar 2 terraform terraform-provider-azure terraform0.12+
我正在使用模块。这是我的文件结构 - Provisioner 和模块是不同的文件夹。堆栈中的 main.tf 调用模块。
> provisioner
>stack
|--main.tf
|--variables.tf
> module (folder)
|--aks
| |--main.tf
| |--outputs.tf
| |--variables.tf
|
|--postgresql
| |--main.tf
| |--outputs.tf
| |--variables.tf
Run Code Online (Sandbox Code Playgroud)
当我在 provsioner 目录中运行“terraform apply”命令时,预计会在应用完成后返回输出。我没有得到输出。当我运行 'terraform output' 时,我得到-“状态文件要么没有定义输出,要么所有定义的输出都是空的。请在您的配置中使用 output 关键字定义一个输出并运行 terraform refresh 使其可用。如果您正在使用插值,请确认插值不为空”
我想知道为什么会这样?
小智 9
Terraform 0.12 及更高版本有意仅跟踪状态中的根模块输出。要公开模块输出供外部使用,您必须使用输出块从根模块导出它们,从 0.12 开始,现在可以在一个输出中为单个模块完成,如下所示:
输出“example_module”{
value = module.example_module
}
因此,对于您的代码,在根目录中添加一个 output.tf 文件,然后在应用后添加您需要输出的输出语句。
Github 问题:https : //github.com/hashicorp/terraform/issues/22126
添加到@crewy_stack 答案。假设您的模块名为sample_ec2_mod。在模块目录内确保输出在outputs.tf中指定
在根文件夹中的main.tf中,添加以下内容:
module "sample_ec2_mod" {
source = "./ec2"
}
output "ec2_module" {
value = module.sample_ec2_mod
}
Run Code Online (Sandbox Code Playgroud)
当您输入terraform applycli 时,它应该会给您一个输出选项。应用后,只需使用即可terraform output查看输出。
| 归档时间: |
|
| 查看次数: |
3548 次 |
| 最近记录: |