所有目录的 terraform 单个 vars 文件

terraform single vars file for all directories

我刚开始学习 Terraform。我想将我的资源安排在单独的目录中,例如模块

.
├── alb/
├── networking/
├── variables.tf
└── servers/

当我从任何目录中 运行 terraform validate 命令时,出现错误,指出变量未声明。

我不想在每个目录中都保留变量。

我想知道是否有人能够提供帮助。

您不需要在每个目录中 运行 terraform validate(除非您仅从您的工作站执行此操作)。您 运行 它位于顶级目录,它已将适当的变量传递给 module 块。

一般来说(也是最佳实践)是将您的模块发布到他们自己的存储库(或其他一些模块托管,例如:tf enterprise)并设置一个管道到 运行 terraform validate 作为一个step/stage/job/whatever。一旦它完成了一个成功的管道 运行,那么您就可以合并并标记它。

那么您就可以放心,您的调用 terraform 可以调用这些模块(希望通过特定版本)知道没有任何错误。

如果您只是在学习 terraform,那么您在本地工作站上执行此操作的可能性似乎很高 - 如果我是您,我会做类似 validate.sh:

的事情
#!/bin/bash

for dir in $(ls -d */); do
    pushd $dir
    echo -e "\n\n$dir\n\n"
    terraform validate
    popd
done

echo "*****"
pwd
echo -e "\n"
terraform validate