我刚刚开始学习 terraform。我想将我的资源安排在单独的目录中,例如模块
.
├── alb/
├── networking/
├── variables.tf
└── servers/
当我从任何目录中运行
terraform validate
命令时,出现错误,提示变量未声明。
我不想在每个目录中保留变量。
我想知道是否有人可以提供帮助。
您不会在每个目录中运行
terraform validate
(除非您仅在工作站上执行此操作)。您在顶级目录中运行它,该目录已将适当的变量传递给 module
块。
一般来说(也是最佳实践)是将模块发布到他们自己的存储库(或其他一些模块托管,例如:tf enterprise)并设置一个管道来运行
terraform validate
作为步骤/阶段/作业/任何内容。一旦成功完成管道运行,您就可以合并并标记它。
然后您就可以放心,您的调用 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