我已经在terraform / terragrunt中定义了我的应用程序的基础架构。 为了能够在不同的环境中部署完整的应用程序,我用整个应用程序创建了一个模块。但是我不断得到:
Error downloading modules: Error loading modules: module xxx: No Terraform configuration files found in directory: .terraform/modules/59ff835a2c7f654267e9f157739ec63a
无法真正找出问题所在
答案 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和此类目录中的文件。 似乎模块不支持此功能,仅支持平面目录结构。 最后,我将单个模块应用程序保存在一个平面目录中,并在文件中添加了用于“命名空间”的前缀。
顺便说一句,这是一个中间重构,直到我可以为该应用创建更多模块为止。