terraform 输出为 运行 时无法获取输出
Cannot get the outputs when terraform output is run
我正在使用模块。这是我的文件的结构 - Provisioner 和模块不同 folders.The main.tf 在堆栈中调用模块。
> provisioner
>stack
|--main.tf
|--variables.tf
> module (folder)
|--aks
| |--main.tf
| |--outputs.tf
| |--variables.tf
|
|--postgresql
| |--main.tf
| |--outputs.tf
| |--variables.tf
当我运行 "terraform apply" command in the provsioner directory, it is expected to return 应用完成后的输出。我没有得到输出。
当我 运行 'terraform output' 我得到- “状态文件没有定义输出,或者所有定义的输出都是空的。请使用输出关键字在您的配置中定义一个输出和运行 terraform 刷新使其可用。如果您使用插值,请验证插值不为空"
我想知道为什么会这样?
Terraform 0.12 及更高版本有意仅跟踪状态中的根模块输出。要公开模块输出以供外部使用,您必须使用输出块从根模块导出它们,从 0.12 开始,现在可以在一个输出中对单个模块完成此操作,如下所示:
output "example_module" {
value = module.example_module
}
因此,对于您的代码,在根目录中添加一个 output.tf 文件,然后在应用后添加您需要输出的输出语句。
Github 问题:https://github.com/hashicorp/terraform/issues/22126
默认情况下不会打印出模块的输出变量。您必须在 provisioner
目录中明确定义输出变量。
添加到@crewy_stack 回答。假设您的模块名为 sample_ec2_mod。在模块目录中确保在 outputs.tf
中指定输出
在main.tf的根文件夹中,添加以下内容:
module "sample_ec2_mod" {
source = "./ec2"
}
output "ec2_module" {
value = module.sample_ec2_mod
}
当你在 cli 中输入 terraform apply
时,它应该给你
一个输出选项。申请后,只需使用terraform output
即可查看
输出。
我正在使用模块。这是我的文件的结构 - Provisioner 和模块不同 folders.The main.tf 在堆栈中调用模块。
> provisioner
>stack
|--main.tf
|--variables.tf
> module (folder)
|--aks
| |--main.tf
| |--outputs.tf
| |--variables.tf
|
|--postgresql
| |--main.tf
| |--outputs.tf
| |--variables.tf
当我运行 "terraform apply" command in the provsioner directory, it is expected to return 应用完成后的输出。我没有得到输出。 当我 运行 'terraform output' 我得到- “状态文件没有定义输出,或者所有定义的输出都是空的。请使用输出关键字在您的配置中定义一个输出和运行 terraform 刷新使其可用。如果您使用插值,请验证插值不为空"
我想知道为什么会这样?
Terraform 0.12 及更高版本有意仅跟踪状态中的根模块输出。要公开模块输出以供外部使用,您必须使用输出块从根模块导出它们,从 0.12 开始,现在可以在一个输出中对单个模块完成此操作,如下所示:
output "example_module" {
value = module.example_module
}
因此,对于您的代码,在根目录中添加一个 output.tf 文件,然后在应用后添加您需要输出的输出语句。
Github 问题:https://github.com/hashicorp/terraform/issues/22126
默认情况下不会打印出模块的输出变量。您必须在 provisioner
目录中明确定义输出变量。
添加到@crewy_stack 回答。假设您的模块名为 sample_ec2_mod。在模块目录中确保在 outputs.tf
中指定输出在main.tf的根文件夹中,添加以下内容:
module "sample_ec2_mod" {
source = "./ec2"
}
output "ec2_module" {
value = module.sample_ec2_mod
}
当你在 cli 中输入 terraform apply
时,它应该给你
一个输出选项。申请后,只需使用terraform output
即可查看
输出。