我试图在我的Terraform代码中使用模块作为依赖项。但是,即使在提到模块中的特定源路径之后,它也会给出错误“模块目录不存在或无法读取。”和“无法评估目录–系统找不到指定的文件”。谁能让我知道是什么原因。
我必须使用每个环境的3个不同的后端状态文件来管理3个不同的环境。这里每个主文件都调用各自的模块文件。主文件夹由后端配置,资源组的创建和调用模块文件组成。
root
|
|-- main
| |--prod
| |--dev
| |--staging
|-- modules
| |--prod
| |--dev
| |--staging
------------ CODE -----------------
provider "azurerm" {
version = "=2.2.0"
features {}
}
#--- CREATING RESOURCE GROUP PER ENVIRONEMENT
terraform {
backend "azurerm" {
resource_group_name = ""
storage_account_name = ""
container_name = ""
key = ""
}
}
variable "location" {
description = "Location for deployment of the Azure
resources"
}
variable "Code" {
description = "Enter a unique two-letter ID to identify
customer resources; should match the DynamoDB table."
}
variable "EnvironmentType" {
description = "Enter a valid environment type. Valid values are
Prod, Dev, Staging"
}
variable "AccountType" {
description = "Select the type of account you wish to create. This
will determine which environments and other resources are created."
}
resource "azurerm_resource_group" "main" {
name = "${var.Code}-${var.EnvironmentType}"
location = "${var.location}"
}
module "ResourcesStack" {
source = "./modules"
AccountType = "${var.AccountType}"
CustomerCode = "${var.Code}"
EnvironmentType = "${var.EnvironmentType}"
location = "${var.location}"
}
答案 0 :(得分:1)
好吧,通过交流,然后我认为在Terraform代码中引用模块时您犯了错误。
错误是当您想引用模块时,需要引用特殊的模块。例如,您想引用模块dev,然后可以在Terraform代码中引用它,如下所示:
module "dev" {
source = "./modules/dev"
...
}
请勿像您一样使用所有模块的根路径设置模块源。
答案 1 :(得分:0)
始终确保目录名称是 module 而不是模块。 我遇到了同样的问题,更新目录名称后,问题解决了。