运行terraform输出时无法获取输出

运行terraform输出时无法获取输出,terraform,terraform-provider-azure,terraform0.12+,Terraform,Terraform Provider Azure,Terraform0.12+,我正在使用模块。这是我的文件结构-Provisioner和module是不同的文件夹。堆栈中的main.tf调用模块 > provisioner >stack |--main.tf |--variables.tf > module (folder) |--aks | |--main.tf | |--outputs.tf | |--variables.

我正在使用模块。这是我的文件结构-Provisioner和module是不同的文件夹。堆栈中的main.tf调用模块

  > provisioner 
        >stack
           |--main.tf
           |--variables.tf
  > module (folder)  
    |--aks
    |     |--main.tf
    |     |--outputs.tf
    |     |--variables.tf
    |
    |--postgresql
    |     |--main.tf
    |     |--outputs.tf
    |     |--variables.tf
当我在provisioner目录中运行“terraform apply”命令时,它将在应用完成后返回输出。我得不到输出。 当我运行“terraform output”时,我得到-“状态文件没有定义输出,或者所有定义的输出都是空的。请在配置中使用output关键字定义输出,并运行terraform refresh以使其可用。如果使用插值,请验证插值值不是空的


我想知道为什么会发生这种情况?

Terraform 0.12和更高版本故意只跟踪状态中的根模块输出。要公开模块输出以供外部使用,必须使用输出块从根模块导出它们,从0.12开始,现在可以对单个模块的多功能输出进行输出,如下所示:

输出“示例_模块”{
值=模块。示例\u模块
}

因此,对于您的代码,在根目录中添加一个output.tf文件,然后在apply之后添加需要输出的输出语句


Github问题:

Terraform 0.12和更高版本故意只跟踪状态中的根模块输出。要公开模块输出以供外部使用,必须使用输出块从根模块导出它们,从0.12开始,现在可以对单个模块的多功能输出进行输出,如下所示:

输出“示例_模块”{
值=模块。示例\u模块
}

因此,对于您的代码,在根目录中添加一个output.tf文件,然后在apply之后添加需要输出的输出语句


Github问题:

默认情况下不会打印模块的输出变量。您必须在
provisioner
目录中明确定义输出变量。

默认情况下,不会打印出模块的输出变量。您必须在
供应器目录中明确定义输出变量。

添加到@crewy\u堆栈应答。假设您的模块名为sample\u ec2\u mod。在模块目录内,确保在outputs.tf中指定输出

在根文件夹的main.tf上,添加以下内容:

module "sample_ec2_mod" {
    source = "./ec2"  
}
  
output "ec2_module" {  
  value = module.sample_ec2_mod  
}
当您在cli中输入
terraform apply
时,它将为您提供 输出选项。应用后,只需使用
terraformoutput
查看
输出。

添加到@crewy\u堆栈应答。假设您的模块名为sample\u ec2\u mod。在模块目录内,确保在outputs.tf中指定输出

在根文件夹的main.tf上,添加以下内容:

module "sample_ec2_mod" {
    source = "./ec2"  
}
  
output "ec2_module" {  
  value = module.sample_ec2_mod  
}
当您在cli中输入
terraform apply
时,它将为您提供 输出选项。应用后,只需使用
terraformoutput
查看
输出。

这是否回答了您的问题?这回答了你的问题吗?