从父目录继承 terraform .tf 文件

Mar*_*llm 2 terraform

地形==0.12.28

目标是从上游目录继承 terraform .tf 文件。我一直在关注这个存储库,它表明只需在 .tf 文件中声明相对上游文件路径即可。虽然当我跑步时

  1. terraform init仅在 cwd 内
  2. terraform init在父目录中,然后在 cwd 中

两次尝试都会输出错误:

Error: Argument or block definition required

on shared_data.tf line 1:
   1: ../../shared_data.tf
Run Code Online (Sandbox Code Playgroud)

为了解决这个错误,我尝试使用 terraform 变量首先定义相对路径:

variable "shared_data_path" {
    default = "../../shared_data.tf"
}
var.shared_data_path
Run Code Online (Sandbox Code Playgroud)

输出错误:

Error: Argument or block definition required

  on shared_data.tf line 4:
  4: var.shared_data_path

An argument or block definition is required here. To set an argument, use the
equals sign "=" to introduce the argument value.
Run Code Online (Sandbox Code Playgroud)

lxo*_*xop 6

您正在查看的存储库不会像您一样通过仅写入文件名来继承数据。您链接到的文件是符号链接,这意味着 Terraform 将该文件视为具有父目录中文件的实际内容。您可以在文件的标题中看到这一点,如果您克隆了该存储库,那么当您在计算机上查看它时,您会看到它是一个符号链接。

假设您有这种目录树:

- parent_dir/
  |-shared_data.tf
  |-child_dir/
    |-something.tf
Run Code Online (Sandbox Code Playgroud)

child_dir然后您可以通过在终端中cd输入 来创建符号链接,然后运行child_dirln -s ../shared_data.tf .

然后你就会有一棵像这样的树

- parent_dir/
  |-shared_data.tf
  |-child_dir/
    |-something.tf
    |-shared_data.tf -> ../shared_data.tf
Run Code Online (Sandbox Code Playgroud)