我正在尝试执行以下操作:
module “git_file” {
source = "git::https://githubXX.com/abc.js"
}
data "archive_file" “init” {
type = "zip"
git_file = "${module.git_file.source}"
}
我无法完成上述工作。无论是使用https://还是ssh://
如何在terraform中将JS文件作为模块进行源代码?
模块块用于将Terraform模块及其相关资源加载到特定模块路径下的模块中。它不能按你的意愿使用。
调用模块意味着将该模块的内容包含到其输入变量具有特定值的配置。模块使用模块块从其他模块中调用:
module "servers" { source = "./app-cluster" servers = 5 }
来源:调用子模块-模块-配置语言-Terraform Docs
它有点像其他语言中的import、require或include。它不能用于下载Terraform模块中使用的文件。
可以使用http数据源执行您所描述的操作:
data "http" "git_file" {
url = "https://githubXX.com/abc.js"
}
data "archive_file" “init” {
type = "zip"
git_file = data.http.git_file.body
}
这也不太可能像你预期的那样奏效。你肯定需要一个到GitHub的原始源链接。
您应该考虑一种替代解决方案,将abc.js放在同一个存储库中,或者使用带有local_exec provisioner的null_resource来下载它和脚本。
resource "null_resource" "" {
provisioner "local-exec" {
command = "git clone https://github.com/..."
}
}
然后,您将在本地使用这些文件,就像在自己的shell上进行git克隆一样。我不建议这样做。它很脆,可能会与其他工具发生奇怪的交互。