12

我有一个包含几个单独配置的存储库,这些配置共享一些模块,并使用看起来像../../modules/rabbitmq. 目录设置如下:

tf/
  configs/
    thing-1/
    thing-2/
  modules/
    rabbitmq/
    cluster/
    ...

使用远程后端设置配置以使用 TF Cloud 进行运行和状态:

terraform {
  backend "remote" {
    hostname     = "app.terraform.io"
    organization = "my-org"

    workspaces {
      prefix = "config-1-"
    }
  }
}

运行terraform init正常。当我尝试在terrform plan本地运行时,它给了我一个错误提示:

Initializing modules...
- rabbitmq in 

Error: Unreadable module directory

Unable to evaluate directory symlink: lstat ../../modules: no such file or
directory

...好像模块目录没有上传到 TF Cloud 或其他东西。是什么赋予了?

4

1 回答 1

15

事实证明问题是(惊喜,惊喜!)它没有将模块目录上传到 TF Cloud。这是因为配置和 TF Cloud 工作区设置都没有包含任何表明此配置文件夹是更大文件系统的一部分的迹象。默认情况下仅上传运行 terraform 的目录(及其所有内容)。

为了解决这个问题,我必须访问 Terraform Cloud 中给定工作区的“设置 > 常规”页面,并更改Terraform Working Directory设置以指定配置的路径,相对于相关的根目录 - 在这种情况下:tf/configs/config-1

之后,运行terraform plan会显示一条消息,指示它将上传哪个父目录,以传达与工作区相关的整个上下文。

于 2020-11-09T20:21:39.690 回答