terragrunt icon indicating copy to clipboard operation
terragrunt copied to clipboard

Auto-init is not working

Open GauntletWizard opened this issue 4 years ago • 4 comments

In one of my repos, I recently added a new submodule to an existing module. Since then, plan-all no longer works for these directories. It appears that terragrunt is not detecting and running terraform init. After running terraform init in each of these directories, subsequent plan-all tasks work.

Katara:cardsavr-deploy ted$ terragrunt plan
[terragrunt] 2019/10/30 13:06:42 Reading Terragrunt config file at /Users/ted/code/switch/terraform/tenants/acmebank/cardsavr-deploy/terragrunt.hcl
[terragrunt] [/Users/ted/code/switch/terraform/tenants/acmebank/cardsavr-deploy] 2019/10/30 13:06:42 Running command: terraform --version
[terragrunt] 2019/10/30 13:06:43 Running command: terraform plan

Error: Module not installed

  on ../../../cardsavr/deploy/cat.tf line 94:
  94: module "cleanup_pcoss_jobs" {

This module is not yet installed. Run "terraform init" to install all modules
required by this configuration.


Error: Module not installed

  on ../../../cardsavr/deploy/cat.tf line 105:
 105: module "generate_vbs_dashboard" {

This module is not yet installed. Run "terraform init" to install all modules
required by this configuration.


Error: Module not installed

  on ../../../cardsavr/deploy/cat.tf line 116:
 116: module "autoscale_vbs" {

This module is not yet installed. Run "terraform init" to install all modules
required by this configuration.

[terragrunt] 2019/10/30 13:06:45 Hit multiple errors:
exit status 1

GauntletWizard avatar Oct 30 '19 20:10 GauntletWizard

Are you using any of the following in the terragrunt source?

  • Local references (e.g source = ../module)
  • Remote references with no ref tag
  • Remote references with a ref tag that is a branch

In each of these cases, Auto Init is known to not work correctly. At a high level, the underlying mechanism is checking for changes in the source tag to decide when to run init.

yorinasub17 avatar Oct 31 '19 16:10 yorinasub17

Yes, source = ../module is in use. That makes sense. Are there any plans to remedy this, i.e. running terraform get before operations?

GauntletWizard avatar Nov 01 '19 17:11 GauntletWizard

@yorinasub17, the cases you mentioned, in which Auto Init is known to not work (or even not 'always' work), is it worth documenting these on Auto-Init documentation please?

At the moment, that page only has a generic note like so, which is helpful, but not helpful enough:

Note that there might be cases where terragrunt does not properly detect that terraform init needs be called. In this case, terraform would fail. Running terragrunt init again corrects this situation.

In case you agree, I've created https://github.com/gruntwork-io/terragrunt/pull/1026 with this amendment to the documentation.

ajorpheus avatar Jan 30 '20 11:01 ajorpheus

As a workaround when using local references (e.g source = ../module), delete the modules.json files before running apply:

  • find . -wholename "*/.terraform/modules" -type d | xargs rm -r

Check that this will not delete unexpected files before proceeding ;-)

rdettai avatar May 27 '22 10:05 rdettai

As I commented in the PR, the issue seems to have already been resolved. Therefore, I close the question.

levkohimins avatar Aug 25 '23 01:08 levkohimins