我有以下简单的设置:
~$ tree
.
??? main.tf
??? modules
??? world
??? main.tf
~$ cat main.tf
output "root_module_says" {
value = "hello from root module"
}
module "world" {
source = "modules/world"
}
~$ cat modules/world/main.tf
output "world_module_says" {
value = "hello from world module"
}
Run Code Online (Sandbox Code Playgroud)
然后我运行:
~$ terraform get
~$ terraform apply
Run Code Online (Sandbox Code Playgroud)
我希望在输出中看到 world_module_says,但我没有,我只看到 root_module_says。这真的很令人困惑,为什么?
如果有帮助:
~$ terraform --version
v0.10.8
Run Code Online (Sandbox Code Playgroud) 我正在使用模块。这是我的文件结构 - 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 使其可用。如果您正在使用插值,请确认插值不为空”
我想知道为什么会这样?