我试图从一个私有模板创建一个github_repository资源,声明如下:
resource "github_repository" "source_code" {
name = "test"
template {
owner = "me"
repository = "template-repository" // this is a private repository
}
visibility = "private"
}template-repository和me是示例值。
当我运行terraform apply时,我会得到以下失败:
╷
│ Error: POST https://api.github.com/repos/me/template-repository/generate: 404 Not Found []
│
│ with module.test.module.repository.github_repository.source_code,
│ on modules\serverless_api_repository\main.tf line 1, in resource "github_repository" "source_code":
│ 1: resource "github_repository" "source_code" {
│
╵当我将TF_LOG设置为DEBUG时,我可以看到POST请求的内容。
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: ---[ REQUEST ]---------------------------------------
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: POST /repos/me/template-repository/generate HTTP/1.1
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: Host: api.github.com
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: User-Agent: go-github
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: Content-Length: 66
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: Accept: application/vnd.github.baptiste-preview+json
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: Content-Type: application/json
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: Accept-Encoding: gzip
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe:
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: {
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: "name": "test",
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: "owner": "",
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: "description": "",
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: "private": true
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: }
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe:
2021-11-29T10:34:30.245-0600 [DEBUG] provider.terraform-provider-github_v4.18.1.exe: -----------------------------------------------------问题是terraform没有将我的OAuth 2.0令牌添加到这个请求的标头中。我应该将Authorization: token ghp_<the actual token>视为标题之一,就像terraform为正常REST调用所做的那样。这个令牌确实有repo声明,我只需添加标题就可以在hoppscotch中成功地尝试这个请求。这是地形上的错误,还是我遗漏了某种配置?
为了记录在案,我已经使用适当的github 2.0令牌声明了一个OAuth提供程序:
provider "github" {
token = "ghp_<secret ooh...>"
}提供程序版本是~> 4.18.0。
我已经证实,terraform可以直接创建存储库。只有当我尝试从私有模板创建时,它才会失败。
发布于 2022-08-25 13:30:29
您需要将私有template-repository定义为模板存储库。只需按照创建模板存储库中的说明操作,然后使用terraform apply重试。
发布于 2021-11-29 17:47:13
我不确定,只是根据文件猜测。
如果要信任Github Terraform提供者文档:
业主-(可选) ..。如果未提供令牌且可用令牌,则将使用拥有该令牌的单个用户帐户。
因此,我认为您可能缺少了提供者的owner参数。
https://stackoverflow.com/questions/70158506
复制相似问题