DEV Community

Marco Ollivier
Marco Ollivier

Posted on

Como resolver um "Failed to Download Module" do Terraform / OpenTofu

Do nada as coisas quebram

Eu rodo quase que diariamente o meu projeto principal de infra da empresa e tudo funciona super bem.

Eis que um belo dia... talvez não a toa... numa sexta feita no final do expediente um módulo simplesmente deixa de responder e apresenta o erro Error: Failed to download module.

Provavelmente você tá muito identificado nesse momento. Aposto que isso já aconteceu com você em algum momento. Nem precisa ser com Terraform.

Pois é. Aconteceu comigo. Do nada, ao rodar o meu tofu init, meu módulo do Aurora parou de responder

Initializing the backend...
Initializing modules...
Downloading registry.opentofu.org/terraform-aws-modules/rds-aurora/aws 9.3.1 for global.aurora.xxx_rds_aurora...
╷
│ Error: Failed to download module
│
│   on global/aurora/aurora.tf line 1:
│    1: module "xxx_rds_aurora" {
│
│ Could not download module "xxx_rds_aurora" (global/aurora/aurora.tf:1) source code from "git::https://github.com/terraform-aws-modules/terraform-aws-rds-aurora?ref=v9.3.1": error downloading
│ 'https://github.com/terraform-aws-modules/terraform-aws-rds-aurora?ref=v9.3.1': /opt/homebrew/bin/git exited with 128: Cloning into '.terraform/modules/global.aurora.xxx_rds_aurora'...
│ ssh: Could not resolve hostname github.comterraform-aws-modules: nodename nor servname provided, or not known
│ fatal: Could not read from remote repository.
│
│ Please make sure you have the correct access rights
│ and the repository exists.
│ .
Enter fullscreen mode Exit fullscreen mode

Investigação

Obvio que a AI não me ajudou

E agora o que fazer?

No Novo Mundo das AIs a primeira reação é perguntar pro ChatGPT. Foi o que eu fiz. Eu nem li o erro direito.

E é óbvio que ele me deu uma pá de soluções que nem fazia sentido.

Por que eu não li o erro desde o começo?

Fiz os checks básicos:

  • Leu o erro? Agora sim!
  • O modulo ainda existe? Sim!
  • A versão existe? Sim!
  • Eu mudei alguma coisa? Não!
  • Alguém mudou alguma coisa? Não!

Então por que diabos ele não tá achando?

O erro fala sobre download... e tava mais obvio do que eu poderia imaginar

Could not download module "xxx_rds_aurora" (global/aurora/aurora.tf:1) source code 
from "git::https://github.com/terraform-aws-modules/terraform-aws-rds-aurora?ref=v9.3.1": error downloading
Enter fullscreen mode Exit fullscreen mode

Foi quando eu me dei conta: ele está tentando baixar o módulo via https só que meu git está configurado pra baixar via ssh. Obvio que vai dar ruim.

A partir daqui vai o checklist seguinte:

  • Meu ~/.gitconfig está configurado corretamente? Sim!
[url "ssh://git@github.com/"]
    insteadOf = https://github.com/
Enter fullscreen mode Exit fullscreen mode

A configuração de usar o ssh em vez do https está ativa.

Bom. Só sobrou a nível de Terraform e OpenTofu.

E realmente era o que faltava.

Solução

Não sei exatamente o motivo disso ter mudado do nada. Eu realmente não fiz nenhum tipo de alteração no meu ambiente de trabalho.

Mas a solução é simples. Se você ainda não tem um arquivo ~/.terraformrc ou ~/.opentofurc crie... e adicione um provider mirror.

provider_installation {
  network_mirror {
    url = "ssh://git@github.com/"
    match = "github.com"
  }
}
Enter fullscreen mode Exit fullscreen mode

Isso vai evitar que você não consiga baixar os módulos por causa do seu Github.

E, crianças... leiam os erros e as documentações. Isso vai ser um diferencial em relação a carreira de vocês.

Top comments (0)