1

TF文件结构:

  • ./
    • main.tf(参见下面的代码,此处定义的 github 提供程序)
    • 模块 1(文件夹)
      • 模块1.tfvars
      • github-repos.tf(见下面的代码)
      • main.tf(空白)
      • variables.tf(为模块定义,值来自 tfvar 文件)
    • 模块2(文件夹)
    • 模块 3(文件夹)

我已经在我的根main.tf文件中设置了 GitHub 集成,如下所示:

./main.tf

terraform {
required_version = ">= 1.0.9"
backend "s3" {
}
required_providers {
github = {
source = "integrations/github"
version = "~> 4.0"
}
}
}

provider "github" {
owner = "githuborgname"
base_url = "https://github.com/githuborgname/" # we have GitHub Enterprise
token = github_mgmt_token
}

github_mgmt_token来自同一main.tf文件中稍后的输出,并且似乎运行良好(因为在 PAT 用户存储库下成功创建了存储库)。

在一个模块中,我有一个github-repos.tf看起来像这样的文件: ./moduel1/ github-repos.tf

resource "github_repository" "ssc" {
name = "ssc"
description = "text"
homepage_url = "https://internalurl.com"
visibility = "private"
delete_branch_on_merge = true
auto_init = true
gitignore_template = "Python"
archive_on_destroy = true
vulnerability_alerts = true
}

这成功创建了没有问题的存储库,但它在 PAT 用户帐户而不是 GitHub 组织中。

您如何创建组织存储库?

4

2 回答 2

1

我认为这是1.0.9&的错误1.0.10(至少,可能还有其他版本),如果我在运行 Terraform 应用程序时提供$GITHUB_OWNERor $OWNERenv var,这将按预期工作并在组织中创建 repo。出于某种原因,它不尊重/查看/理解这些版本中预期的提供程序参数。

于 2021-11-01T17:31:27.143 回答
1

我认为您需要使用owner提供者的参数:

owner -(可选)这是要管理的目标 GitHub 组织或个人用户帐户。例如,torvalds 和 github 是有效的所有者。提供此值是可选的,它也可以来自 GITHUB_OWNER 环境变量。如果未提供且令牌可用,则将使用拥有该令牌的个人用户帐户。如果未提供且没有可用的令牌,则提供程序可能无法正常运行。

取自https://registry.terraform.io/providers/integrations/github/latest/docs

IE

provider "github" {
  token = var.token
  owner = "myorg"          // <--- here
}
于 2021-10-30T20:04:53.890 回答