Skip to content
GitLabGitHub

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.

  • Automatyzacja: grupy i projekty tworzą się automatycznie na podstawie kodu.
  • Powtarzalność: każda zmiana jest opisana w repozytorium, a tofu plan pokazuje 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ł:

  1. Wydanie wersji vagrat 1.1.0

  2. Grupy:

    Repozytoria

    • pl.rachuna-net → infrastructure → gitlab-com → iac-gitlab
    • pl.rachuna-net → artifacts → opentofu → gitlab-group

  3. Wydanie wersji v1.0.0

  4. Utworzenie definicji w iac-gitlab-com dla grup i import

    Section titled “Utworzenie definicji w iac-gitlab-com dla grup i import”
  5. 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)
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/"
}