Skip to content

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. profiles/opentofu

  2. Grupy:

    Repozytoria

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

  3. Wydanie wersji 1.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”
    • Definicja grupy dev.rachuna

      tofu import module._pl_rachuna-net.gitlab_group.group 82399007
    • Definicja grupy dev.rachuna/apps

    • Definicja grupy dev.rachuna/artifacts

    • Definicja grupy dev.rachuna/devtools

    • Definicja grupy dev.rachuna/infrastructure

      tofu import module.pl_rachuna-net.module._apps.gitlab_group.group 132755809
      tofu import module.pl_rachuna-net.module._artifacts.gitlab_group.group 132732346
      tofu import module.pl_rachuna-net.module._devtools.gitlab_group.group 132751910
      tofu import module.pl_rachuna-net.module._infrastructure.gitlab_group.group 132730200
    • Definicja grupy dev.rachuna/artifacts/opentofu

      tofu import module.pl_rachuna-net.module.artifacts.module._opentofu.gitlab_group.group 132732367
    • Definicja grupy dev.rachuna/infrastructure/gitlab-com

      tofu import module.pl_rachuna-net.module.infrastructure.module._gitlab-com.gitlab_group.group 132730215
  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)
├── dev.rachuna/      # 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::https://gitlab.com/dev.rachuna/artifacts/opentofu/gitlab-group.git?ref=main",
      "parent_group": "${local.parent_name}",
      "name": "devtools",
      "description": "Narzedzia i skrypty dla developerów",
      "visibility": "public",
      "avatar": "images/devtools.png"
    },
    "devtools": {
      "source": "./devtools/"
    }
  }
}