Каталог модулей не существует или не может быть прочитан в Terraform - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь использовать модули для зависимостей в моем коде 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}"
      }

1 Ответ

1 голос
/ 27 марта 2020

Ну, с коммуникацией, а затем, я думаю, вы совершили ошибку, когда указали модули в коде Terraform.

Ошибка в том, что когда вы хотите процитировать модули, вы должны указать специальное один. Например, вы хотите заключить в кавычки модуль dev, а затем указать его в коде Terraform следующим образом:

module "dev" {
  source      = "./modules/dev"
  ...
}

Не устанавливайте источник модуля с путем root всех модулей, подобных вам сделал.

...