Zarządzanie grupami w gitlab

OpenTofu coraz częściej wykorzystywany jest nie tylko do budowy infrastruktury chmurowej, lecz także do zarządzania całym ekosystemem usług.
Po co IaC dla GitLaba?
Section titled “Po co IaC dla GitLaba?”- Automatyzacja: grupy i projekty tworzą się automatycznie na podstawie kodu.
- Powtarzalność: każda zmiana jest opisana w repozytorium, a
tofu planpokazuje różnice. - Rozliczalność: pełna historia zmian wraz z informacją kto, gdzie i kiedy je zlecił.
- Porządek: struktura katalogów odpowiada strukturze GitLaba, co ułatwia nawigację i odnalezienie definicji konkretnej grupy czy projektu.
Wymagania
- zainstalowany opentofu
- repozytorium iac-gitlab z zestawem definicji, który pozwala w deklaratywny sposób tworzyć i utrzymywać grupy oraz projekty w GitLabie.
- Moduł:
- gitlab-group - moduł opentofu do zarządzania grupami
Krop po kroku
Section titled “Krop po kroku”-
Instalacja opentofu
Section titled “Instalacja opentofu”Wydanie wersji vagrat 1.1.0
-
Utworzenie obiektów
Section titled “Utworzenie obiektów”Grupy:
- pl.rachuna-net
- pl.rachuna-net → artifacts
- pl.rachuna-net → artifacts → opentofu
- pl.rachuna-net → infrastructure
- pl.rachuna-net → infrastructure → gitlab-com
Repozytoria
- pl.rachuna-net → infrastructure → gitlab-com → iac-gitlab
- pl.rachuna-net → artifacts → opentofu → gitlab-group
-
Napisanie logiki dla modułu
Section titled “Napisanie logiki dla modułu gitlab-group”gitlab-groupWydanie wersji v1.0.0
-
Utworzenie definicji w
Section titled “Utworzenie definicji w iac-gitlab-com dla grup i import”iac-gitlab-comdla grup i import-
Definicja grupy pl.rachuna-net
tofu import module._pl_rachuna-net.gitlab_group.group 105046057 -
Definicja grupy pl.rachuna-net/apps
-
Definicja grupy pl.rachuna-net/artifacts
-
Definicja grupy pl.rachuna-net/devtools
-
Definicja grupy pl.rachuna-net/infrastructure
tofu import module.pl_rachuna-net.module._apps.gitlab_group.group 110255322 tofu import module.pl_rachuna-net.module._artifacts.gitlab_group.group 121998514 tofu import module.pl_rachuna-net.module._devtools.gitlab_group.group 121803868 tofu import module.pl_rachuna-net.module._infrastructure.gitlab_group.group 121998636 -
Definicja grupy pl.rachuna-net/artifacts/opentofu
tofu import module.pl_rachuna-net.module.artifacts.module._opentofu.gitlab_group.group 121998544 -
Definicja grupy pl.rachuna-net/infrastructure/gitlab-com
tofu import module.pl_rachuna-net.module.infrastructure.module._gitlab-com.gitlab_group.group 121998641
-
-
Wdrażanie zmian z opentofu
Section titled “Wdrażanie zmian z opentofu”tofu apply -auto-approve
Jak zbudowane jest repozytorium iac-gitlab-com ?
Section titled “Jak zbudowane jest repozytorium iac-gitlab-com ?”Struktura katalogów odzwierciedla hierarchię GitLaba:
iac-gitlab-com
├── data/ # listy do walidacji (typy projektów, avatary, etykiety)
├── pl.rachuna-net/ # główna grupa i jej podgrupy
│ ├── apps/
│ ├── artifacts/
│ │ └── opentofu/
│ ├── devtools/
│ └── infrastructure/
│ └── gitlab-com/
└── _providers.tf # konfiguracja providerów (m.in. GitLab)Przykładowa definicja grupy
Section titled “Przykładowa definicja grupy”module "_devtools" {
source = "git@gitlab.com:pl.rachuna-net/infrastructure/gitlab/modules/gitlab-group?ref=v1.0.0"
name = "devtools"
description = "Narzedzia i skrypty dla developerów"
parent_group = local.parent_name
visibility = "public"
default_branch = "main"
avatar = "dev-tools"
}
module "devtools" {
source = "./devtools/"
}