Wir haben mehr als 350 Mitarbeiter und mehr als 400 Repositories auf Github. Jede RĂŒbe kann mehrere Administratoren haben und sie tun, was sie fĂŒr richtig halten - natĂŒrlich kommt es vor, dass eine Person nicht weiĂ, was die andere tut. Als wir es satt hatten, die Qualen anderer in der Infrastruktur zu betrachten und Menschen manuell hinzuzufĂŒgen / zu entfernen, entschieden wir uns fĂŒr das zentralisierte Management, Infrastruktur als Code.

Und wir haben Terraform als Plattform gewÀhlt.
"Ich habe WĂŒrfel mit den Buchstaben O, P, A ..."
Auf dem Papier sah alles glatt aus. Terraform ist beliebt, es sollte nicht schwer sein, Leute zu finden, die es kennen. Es hat einen Status und TF bringt passende Ressourcen mit - wir können immer sicher sein, dass die tatsÀchliche Konfiguration genau der Beschreibung entspricht. Und es ist nicht mehr nötig, auf die Web-BenutzeroberflÀche zu klettern - ich habe mir die Konfiguration angesehen und alles gesehen.
. 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-.