【问题标题】:terraform single vars file for all directories所有目录的terraform单个vars文件
【发布时间】:2021-10-06 00:01:27
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: terraform hcl


【解决方案1】:

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

一般来说(和最佳实践)是将您的模块发布到他们自己的存储库(或其他一些模块托管,例如:tf 企业)并设置一个管道来运行 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

【讨论】:

  • 哦,我应该提一下,将本地模块放在一个公共子目录下也是最佳做法 - 例如./modules/
  • 谢谢。所以它就像 CF 一样,每个模板都有自己的参数,每个文件夹(模块)都需要有自己的一组变量。
猜你喜欢
  • 1970-01-01
  • 2013-12-31
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
相关资源
最近更新 更多