无法下载Terraform模块

时间:2019-04-08 08:02:32

标签: terraform infrastructure infrastructure-as-a-code terragrunt

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

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

无法真正找出问题所在

2 个答案:

答案 0 :(得分:1)

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

可能发生这种情况的一个原因是,source引用了一个包(例如,存储库或归档文件),该包实际上在子目录中包含多个模块,而在根目录中则没有任何内容。尽管the Standard Module Structure要求在根目录中存在某种“默认”组合模块,然后其他子模块充当该默认的单独组件,这是一种约定,而不是要求,并且如果需要的话,还需要一个包装子目录中只能包含 个模块。

要引用a module in a subdirectory,请使用特殊的双斜杠//分隔符将包路径与子目录路径分开。

例如,要访问Terraform注册表中the modules/consul-cluster subdirectory中的the hashicorp/consul/aws module,您的完整source地址将为hashicorp/consul/aws//modules/consul-cluster。同样,对于git仓库源vpc的子目录git::https://example.com/network.git,您可以将source设置为git::https://example.com/network.git//vpc

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

答案 1 :(得分:0)

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

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