我是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
}
main_code级别下引用存储模块的代码段
#-------main_code/main.tf
module "storage" {
source = "../storage"
}
当我从存储文件夹发出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
我已经阅读了许多关于堆栈溢出和其他github问题论坛的问题公告板,但并没有帮助解决这个问题。不知道我在想什么!
答案 0 :(得分:1)
我遇到了类似的问题,但对我来说问题是,我创建的模块正在寻找 providers.tf,因此也必须为模块添加它并且它起作用了。 >
├── main.tf
├── modules
│ └── droplets
│ ├── main.tf
│ ├── providers.tf
│ └── variables.tf
└── variables.tf
所以我的提供者存在于之前的根位置,哪些模块无法使用,所以这对我来说是个问题。
答案 1 :(得分:0)
我同意@rclement的评论。
几种解决Terraform问题的方法。
jq --argjson filter "$filter" '
map((.title | split(" ")) as $title
| select(all( $title[] as $t
| $filter[] as $kw
| $kw != $t )))' input.json
文件夹,然后重新运行.terraform
。 这始终是第一选择。但是,下次运行terraform init
会花费一些时间,它将再次开始安装所有提供程序和模块。
terraform init
来节省部署时间,则可以运行.terraform
大多数情况下,您对模块进行了一些更改,因此需要刷新。
答案 2 :(得分:0)
只需运行terraform get --update
来更新现有模块。如果这样不起作用,请删除.terraform文件夹。