运行terraform输出时无法获取输出
我正在使用模块。这是我的文件结构-Provisioner和module是不同的文件夹。堆栈中的main.tf调用模块运行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
>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
查看
输出。这是否回答了您的问题?这回答了你的问题吗?