如何通过 Terraform 下载 git 代码?

Kri*_*hna 5 git github terraform

我正在尝试在 Terraform 中签出 git repo 代码并访问其中的文件 (my_file.py),我使用了下面的代码,

module "my_git_repo" {
  source = "https://git.mycompany.org/my_repo.git"
}
Run Code Online (Sandbox Code Playgroud)

输出:

 "my_display" {
      value       = "${my_git_repo.source}/my_file.py"
    }
Run Code Online (Sandbox Code Playgroud)

我得到的错误是,错误:无法下载模块下载“https://git.mycompany.org/my_repo.git”:没有返回源 URL

注意:我可以使用命令“git clone”进行结账。

Mar*_*ins 4

Terraform 中的块module用于引用 Terraform 模块,而不是像 Python 文件这样的任意代码。

正如 Don 提到的,告诉 Terraform 使用 git 从 HTTPS URL 获取模块的正确语法是添加前缀git::,覆盖 HTTP URL 的默认处理:

module "my_git_repo" {
  source = "git::https://git.mycompany.org/my_repo.git"
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您要将其与目标目录中不包含任何.tf文件的存储库一起使用,那么 Terraform 会抱怨源地址未引用有效的 Terraform 模块。要获得类似于您在问题中描述的内容,您还需要在该目录中至少放置一个最小的 Terraform 模块配置,例如以下outputs.tf文件:

output "python_file" {
  value = "${path.module}/my_file.py"
}
Run Code Online (Sandbox Code Playgroud)

您的调用模块可能看起来像这样:

module "my_git_repo" {
  source = "git::https://git.mycompany.org/my_repo.git"
}

output "my_display" {
  value = module.my_git_repo.python_file
}
Run Code Online (Sandbox Code Playgroud)

然而,这对于 Terraform 来说是一件非常不寻常的事情。您在这里没有提到您的根本目标是什么,但您提出问题的方式让我怀疑您正在尝试使用 Terraform 来解决它不是旨在解决的问题。可能值得提出一个新问题,该问题更多地围绕您的根本问题(为什么您需要来自 Terraform 配置中的远程 git 存储库的这个 Python 文件),这些回答可能能够建议其他方法来解决该问题,而无需强制远程存储库的行为类似于 Terraform 模块。