指定模块时 terraform init 不起作用

sai*_*mar 6 terraform terraform-provider-aws

我是 terraform 的新手,并试图解决测试模块时遇到的一个小问题。

以下是我本地计算机中的文件夹结构。

在此输入图像描述

我在存储文件夹级别有以下代码

#-------storage/main.tf

provider "aws" {
  region = "us-east-1"
}

resource "aws_s3_bucket" "my-first-terraform-bucket" {
    bucket = "first-terraform-bucket"
    acl = "private"
    force_destroy = true
}
Run Code Online (Sandbox Code Playgroud)

以下是引用存储模块的 main_code 级别的片段

#-------main_code/main.tf

module "storage" {
    source = "../storage"
}
Run Code Online (Sandbox Code Playgroud)

当我从存储文件夹发出 terraform init / plan / apply 时,它工作得非常好,并且 terraform 创建了 s3 存储桶。

但是当我从 main_code 文件夹中尝试相同的操作时,我收到以下错误 -

main_code@DFW11-8041WL3: terraform init
Initializing modules...
- module.storage
Error downloading modules: Error loading modules: module storage: No Terraform configuration files found in directory: .terraform/modules/0d1a7f4efdea90caaf99886fa2f65e95
Run Code Online (Sandbox Code Playgroud)

我已经阅读了 Stack Overflow 和其他 github 问题论坛上的许多问题板,但没有帮助解决这个问题。不知道我错过了什么!

BMW*_*BMW 3

我同意@rclement 的评论。

解决 terraform 问题的几种方法。

  1. 清理.terraform文件夹并重新运行terraform init

这始终是第一选择。但下次运行时需要时间terraform init,它会再次开始安装所有提供程序和模块。

  1. 如果您不想清理.terraform以节省部署时间,您可以运行terraform get --update=true

大多数情况是,您对模块进行了一些更改,并且需要刷新。