0

我在 terraform/terragrunt 中定义了我的应用程序的基础架构。为了能够在不同的环境中部署完整的应用程序,我为整个应用程序创建了一个模块。但是我不断得到:

Error downloading modules: Error loading modules: module xxx: No Terraform configuration files found in directory: .terraform/modules/59ff835a2c7f654267e9f157739ec63a

无法真正找出问题所在

4

2 回答 2

2

如果指示为的包/目录source不包含任何.tf文件,Terraform 将生成此消息。

可能发生这种情况的一个原因是,如果source引用的包(例如存储库或存档)实际上在子目录中包含多个模块,而根目录中没有任何内容。虽然标准模块结构要求在根中存在某种“默认”组合模块,然后其他子模块充当该默认值的独立组件,但这是一种约定而不是要求,如果需要,一个包可以包含子目录中的模块。

要引用子目录中的模块,请使用特殊的双斜杠//分隔符将包路径与子目录路径分开。

例如,要访问Terraform Registry 中模块的子目录,您完整modules/consul-cluster地址hashicorp/consul/awssourcehashicorp/consul/aws//modules/consul-cluster. vpc同样,对于git 存储库源的子目录git::https://example.com/network.git,您将设置sourcegit::https://example.com/network.git//vpc.

您指定的任何目录都必须至少包含一个.tf文件,Terraform 才能将其视为有效的 Terraform 模块。

于 2019-04-08T16:39:52.387 回答
0

问题是我保留了多个目录结构,例如:security/iam 和这些目录中的文件。似乎模块不支持这个,只是一个平面目录结构。最后,我将我的单个模块应用程序保存在一个平面目录中,并在文件中为“命名空间”添加前缀。

顺便说一句,这是一个中间重构,直到我可以为应用程序创建更多模块。

于 2019-04-08T08:02:32.127 回答