对所有模块使用单个 vars 文件

问题描述 投票:0回答:1

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

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

当我从任何目录中运行

terraform validate
命令时,出现错误,提示变量未声明。

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

我想知道是否有人可以提供帮助。

terraform hcl
1个回答
1
投票

您不会在每个目录中运行

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
© www.soinside.com 2019 - 2024. All rights reserved.