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”进行结账。
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 模块。