Githubには350人以上の人と400人以上のリポジトリがあります。各カブには複数の管理者がいる可能性があり、彼らは適切と思われることを行います。当然、一方の人がもう一方の人が何をしているかを知らないことがあります。インフラストラクチャ内の他の人の苦痛を見て、手動で人を追加/削除することにうんざりしたとき、私たちは集中管理、コードとしてのインフラストラクチャに行くことにしました。

そして、プラットフォームとしてTerraformを選択しました。
「O、P、Aの文字が入ったキューブがあります...」
紙の上ではすべてが滑らかに見えました。Terraformは人気があり、それを知っている人を見つけるのは難しいことではありません。状態があり、TFは一致するリソースをもたらします。実際の構成が説明どおりであることを常に確認できます。そして、もうWebUIにアクセスする必要はありません。構成を確認してすべてを確認しました。
. TF , . 20 , — Github- API.
, :
- .
- .
- .
- .
- .
- .
. , Terraform : 1 4. , 2 5. : TF , , . — , . , - - PR, c . …
. . :
resource "github_membership" "membership_for_" {
username = ""
role = "member"
}
resource "github_team" "team_" {
name = ""
description = ""
privacy = "closed"
parent_team_id = "123456"
}
resource "github_team_membership" "team___membership" {
team_id = "${data.terraform_remote_state.teams.team__id}"
username = ""
role = "member"
}
resource "github_repository" "" {
name = ""
description = ""
homepage_url = ""
has_projects = false
has_wiki = true
has_issues = true
has_downloads = true
private = true
archived = false
topics = ["yii", "school", "mobile"]
}
resource "github_team_repository" "team__repo_" {
team_id = "${data.terraform_remote_state.teams.team__id}"
repository = "${data.terraform_remote_state.repos.repo__name}"
permission = "push"
}
resource "github_repository_collaborator" "__collaborator" {
repository = ""
username = ""
permission = "admin"
}
, , - , - . — . — . ...
, id. — — , id . . . - . — ? .
« » . — « ». . ? ? ? . , . , — .
TF, , - . - , . Terraform ! , : TF, - TF. ...
-, -!

— API. — . , Terraform , 800 , 801 - , , .
- .
- , . resource, value 123456, , .
- - — , -- .
- / / — .
YAML
skyeng:
name: Skyeng
admin:
- aleksandr.sergeich
member:
- andrey.vadimych
- denis.andreich
- mikhail.leonidych
- vladimir.nickolaich
qa-team:
privacy: secret
maintainer:
- denis.andreich
member:
- andrey.vadimych
- mikhail.leonidych
- vladimir.nickolaich
alerta:
description: >-
Alerta monitoring system
homepage: https://alerta.io
teams:
admin:
- admin-team
push:
- dev-team
- qa-team
collaborators:
direct:
- denis.andreich
outside:
- william.shakespeare
, —
: , — . CI/CD. - : , . . , .
:
ansible-playbook gitwand.yml
-e github_repos__state=present
-e github_repos__include=my_repo
- — :
ansible-playbook gitwand.yml
-e github_teams__state=present
-e github_teams__include=my_team
, github_teams__include.
. LDAP, , , . , , , - . Github-.