Terraform-加载模块时出错-没有此类文件或目录(文件夹重命名后)

Terraform-加载模块时出错-没有此类文件或目录(文件夹重命名后),terraform,amazon-web-services,Terraform,Amazon Web Services,我在使用时遇到了一个奇怪的问题 考虑以下文件系统: ├── Modules │   └── IAM │   ├── outputs.tf │   ├── resources.tf │   └── variables.tf ├── outputs.tf ├── providers.tf ├── resources.tf (Created automatically by Terraform) ├── terraform.tfstate └── terraform.tfs

我在使用时遇到了一个奇怪的问题

考虑以下文件系统:

├── Modules
│   └── IAM
│       ├── outputs.tf
│       ├── resources.tf
│       └── variables.tf
├── outputs.tf
├── providers.tf
├── resources.tf

(Created automatically  by Terraform)
├── terraform.tfstate
└── terraform.tfstate.backup
我从
root
模块调用
IAM
模块:

##resources.tf

# Other Resource configuration...


# Calling IAM module
module "iam" {
  source = "Modules/IAM"
}
这很简单,在我重命名模块的文件夹名称之前,一切都很正常

文件夹的原始名称是
IAM_Module
,当我将其更改为
IAM
时,事情开始崩溃

terraforminit
的输出(模块的名称为
iam
,因此不要混淆):

查看
.terraform/modules
内部,我可以看到由于某些原因,指向文件夹旧名称(
IAM_Module
)的符号链接仍然存在:

├── 94...5b -> /lab1/Modules/IAM
├── b7...3d -> /lab1/Modules/IAM_Module <--- Previous name of folder
└── modules.json
我试图
terraform刷新
,但我收到了相同的
文件或目录
错误

地形版本:v0.11.11

任何帮助都将不胜感激



(*)在这方面,他们似乎通过手动干预解决了相同的错误(由不同原因引起),我更愿意避免这种情况。

我再次尝试重现该问题。

首先,我手动删除了
.terraform
文件,并运行了
terraforminit

现在我处于文件重命名之前的状态

再次重命名文件后,我运行了
terraform plan
,并收到以下明确错误:

Error: Error loading modules: module iam: not found, may need to run 'terraform init'.
运行
terraforminit
后,我检查了
.terraform/modules
文件,看到了两个符号链接:
-一个用于新模块
-一个用于旧模块,该模块现在被涂成红色

这两个模块仍然出现在
modules.json
文件下

我不知道为什么我第一次尝试时没有弹出这个消息,但我认为在这种情况下,地形也可能会有所帮助-从文档:

terraform get命令用于下载和更新模块 在根模块中提到

在我的情况下,模块已经下载,因此我必须使用
-update
标志运行
terraform get

如果模块已下载且未设置-update标志, 地形不会做任何事


我认为在删除像
.terraform
这样的自动生成文件之前,需要考虑两种解决方案之一(
terraforminit/get


我希望这会对某人有所帮助。

您是否尝试过从
.terraform
中删除旧模块?你可能需要先将你的资源
terraformstatemv
以避免状态问题。我想如果我手动删除它,它可能会工作,但我正在搜索一个不包括手动设置内部文件的解决方案。这将是一次性清理,而不是设置。但是如果我要重命名其中一个模块文件夹,我必须重新运行它吗?
"modules": [
    {
        "path": [
            "root"
        ],
        "outputs": {},
        "resources": {},
        "depends_on": []
    },
    {
        "path": [
            "root",
            "iam" <----- Here
        ],
        "outputs": {},
        "resources": {
Error: Error loading modules: module iam: not found, may need to run 'terraform init'.