6
votes

échec de l'init terraform - git doit être disponible et sur le PATH

Je rencontre un problème lors de l'exécution de terraform init / get.

Erreur que j'obtiens:

Error downloading modules: Error loading modules: error downloading 'ssh://git@github.com/etc etc': git must be available and on the PATH

Le chemin github est correct, fonctionne bien sur un autre machine.

Git fonctionne très bien, il est également dans le PATH. Les TF_LOG sont vides. Travailler sur ubuntu.

Merci!


1 commentaires

De quel système d'exploitation exécutez-vous cela? Vous mentionnez que cela fonctionne sur Ubuntu mais ne spécifiez pas comment vous l'exécutez lorsque vous obtenez l'échec. Que montre git --version ?


3 Réponses :


0
votes

Conformément à la documentation terraform ,

Pour github Projets .com, pour cloner via SSH, utilisez le
forme suivante:

module "storage" {
  source = "git::ssh://username@example.com/storage.git"
}

Pour les référentiels Git arbitraires, utilisez le préfixe spécial git ::

module "consul" {
  source = "git@github.com:hashicorp/example.git"
}

Vérifiez également si Config ~ / .ssh / config est correct pour votre compte github:

J'espère que cela vous aidera.


1 commentaires

si c'est github c'est encore plus simple que vous l'avez dit c'est juste: module "consul" {source = "github.com/hashicorp/example"}



7
votes

Je ne sais pas si vous avez résolu votre problème ou non, mais j'ai rencontré le même problème et je l'ai résolu. Partager la réponse au cas où quelqu'un d'autre aurait besoin d'aide.

Pour référence, j'ai rencontré ce problème sur

  • Ubuntu 18.04
  • Linux Ubuntu 4.15.0-45-générique
  • Terraform v0.11.11 Rev 216 installé via Snap

L'erreur vient du fichier terraform / vendor / github.com / hashicorp / go-getter / get_git.go la fonction Get . La première chose qui est tentée par la fonction est l'appel suivant

if _, err := exec.LookPath("git"); err != nil {
   return fmt.Errorf("git must be available and on the PATH")
}

Cela amène go à rechercher dans tous les dossiers répertoriés dans le chemin un fichier avec le nom fourni, case git . J'ai créé et exécuté un script go qui fait le même appel et il s'est comporté comme prévu, trouvant git sans erreur.

Après cela, j'ai désinstallé terraform de snap et téléchargé l'exécutable directement depuis le site Web de Hashicorp. Quand j'ai exécuté cette version de l'exécutable qui était encore v0.11.11 , il a fonctionné sans problème. Cela me porte à croire que l'erreur a quelque chose à voir avec la façon dont snap exécutait l'exécutable ou le modèle d'autorisation autour des applications installées par snap.

TL; DR: Désinstallez la version de Terraform installée par snap et téléchargez et utilisez à la place le binaire Hashicorp.


0 commentaires

-1
votes

Désinstallez la version installée snap de Terraform et téléchargez et utilisez à la place le binaire Hashicorp.


0 commentaires