0

我有一个如下目录结构来为我的项目构建 Terraform 资源:

s3
  main.tf
  variables.tf
  tag_variables.tf

ec2
  main.tf
  variables.tf
  tag_variables.tf

vpc
  main.tf
  variables.tf
  tag_variables.tf

当我想在 s3 中构建或更改某些内容时,我运行 Terraform 的 s3 目录。当我想构建 ec2 资源时,我 cd 进入该文件夹并在那里进行 Terraform 构建。我一次运行一个。

目前,我在每个目录中都有一个定义为变量的标签列表。这是同一个文件,多次复制到每个目录。

有没有办法避免将相同的标签文件复制到所有文件夹中?我正在寻找一种解决方案,我只有一个标签文件的副本。Terraform 确实提供了一种使用“本地”动词的解决方案,但这仍然需要在每个目录中重复该文件。

我尝试了什么:

  1. 我尝试将变量放入模块中,但变量是模块内部的,模块并非旨在将代码共享到主文件中。
  2. 我尝试将变量作为模块的输出,但它也不喜欢那样。

有没有人有办法实现一个在任何地方都可以使用的中央标签文件?我正在考虑诸如包含来自其他地方的源代码块之类的东西?或者任何其他解决方案都会很棒。

4

1 回答 1

0

感谢 ydaetskcoR 的建议,我使用了符号链接,这非常有效。

我将标签 list.tf 文件放在一个公共目录中。每个 Terraform 项目现在都有一个指向该文件的符号链接。(此外,我还以这种方式链接了其他一些常用文件,例如 provider.tf)。

为了其他人的利益,在 Linux 中,符号链接是一个小文件,它是指向另一个文件的链接,但它可以完全像原始文件一样使用。

这允许许多不同且单独的 Terraform 项目引用公共文件。

注意:如果您希望模块化常见的 Terraform 功能,请查看Terraform 模块,这些模块旨在模块化您的代码。但是,它们不能用于上面的简单用例。

于 2020-01-23T13:42:16.083 回答