Epic 2

2 minute read
🎯 Cel epiki
Pełna automatyzacja zarządzania strukturą grup i projektów w przestrzeni pl.rachuna-net
na GitLabie przy wykorzystaniu podejścia Infrastructure as Code (IaC) opartego na OpenTofu.
-
Utworzenie modułów OpenTofu do zarządzania grupami (gitlab-group), projektami (gitlab-project) oraz kontenerami (OpenTofu).
-
Import istniejących zasobów do OpenTofu state (OpenTofu import).
-
Ujednolicenie struktury folderów i repozytoriów (infrastructure/OpenTofu, modules, iac-gitlab, containers).
-
Przeniesienie konfiguracji do zarządzalnych modułów oraz refaktoryzację kodu.
--- config: theme: neo layout: dagre look: neo --- flowchart TD subgraph s1["Czynności manualne"] n5["Utworzenie grup i repozytoriów<br>"] end subgraph s2["Utworzenie modułów"] n8["gitlab-group"] n10["gitlab-project"] end subgraph s3["Repozytorium IAC"] n12["iac-gitlab"] end subgraph s4["Wykonywanie zmian"] n13["tofu plan<br>(wyświetlenie zmian)"] n14["tofu apply<br>(Wykonywanie zmian)"] end s1 --> s2 n8 --> n12 n10 --> n12 n13 --> n14 n12 --> s4 n11["Utworzenie obrazu <br>kontenerowego<br>z OpenTofu"] --> s4 n5@{ shape: rect} n12@{ shape: rounded} n11@{ shape: rounded} n8:::Sky n10:::Sky n12:::Sky n11:::Sky classDef Sky stroke-width:1px, stroke-dasharray:none, stroke:#374D7C, fill:#E2EBFF, color:#374D7C click n8 "https://gitlab.com/pl.rachuna-net/infrastructure/opentofu/modules/gitlab-group" click n10 "https://gitlab.com/pl.rachuna-net/infrastructure/opentofu/modules/gitlab-project" click n12 "https://gitlab.com/pl.rachuna-net/infrastructure/opentofu/iac-gitlab" click n11 "https://gitlab.com/pl.rachuna-net/containers/opentofu"
Manualne tworzenie repozytoriów i grup
- ✅ Utworzenie manualne grupy
pl.rachuna-net
- ✅ Utworzenie manualne grupy
pl.rachuna-net/infrastructure
- ✅ Utworzenie manualne grupy
pl.rachuna-net/infrastructure/opentofu
- ✅ Utworzenie manualne grupy
pl.rachuna-net/infrastructure/opentofu/modules
- ✅ Utworzenie manualne repozytorium
pl.rachuna-net/infrastructure/opentofu/iac-gitlab
- ✅ Utworzenie manualne repozytorium
pl.rachuna-net/infrastructure/opentofu/modules/gitlab-group
- ✅ Utworzenie manualne repozytorium
pl.rachuna-net/infrastructure/opentofu/modules/gitlab-project
Moduły OpenTofu
- ✅ Utworzenie modułu zarządzającego grupami gitlab-group → v1.0.0
- ✅ Utworzenie modułu zarządzającego projektami gitlab-project → v1.0.0
Utworzenie obrazu z OpenTofu
- ✅ Utworzenie obrazu z opentofu
podman run -it -v $PWD:/opentofu -v ~/.ssh:/root/.ssh -u root registry.gitlab.com/pl.rachuna-net/containers/opentofu:1.0.0-3d3738b8 bash
cd /opentofu
CI_SERVER_URL="https://gitlab.com"
CI_PROJECT_ID="123456789"
CI_USERNAME="gitlab-runner"
CI_JOB_TOKEN="***"
TF_STATE_NAME="default"
tofu init \
-backend-config="address=${CI_SERVER_URL}/api/v4/projects/${CI_PROJECT_ID}/opentofu/state/${TF_STATE_NAME}" \
-backend-config="lock_address=${CI_SERVER_URL}/api/v4/projects/${CI_PROJECT_ID}/opentofu/state/${TF_STATE_NAME}/lock" \
-backend-config="unlock_address=${CI_SERVER_URL}/api/v4/projects/${CI_PROJECT_ID}/opentofu/state/${TF_STATE_NAME}/lock" \
-backend-config="username=${CI_USERNAME}" \
-backend-config="password=${CI_JOB_TOKEN}" \
-backend-config="lock_method=POST" \
-backend-config="unlock_method=DELETE" \
-backend-config="retry_wait_min=5" \
-lock=false \
-migrate-state
tofu plan
tofu apply -auto-aprove
Import istniejących zasobów do OpenTofu
tofu import module.group_pl_rachuna-net.gitlab_group.group 105046057
- ✅ Definicja i import grupy pl.rachuna-net
- ✅ Definicja i import grupy pl.rachuna-net/infrastructure
- ✅ Definicja i import grupy pl.rachuna-net/infrastructure/opentofu
- ✅ Definicja i import grupy pl.rachuna-net/infrastructure/opentofu/modules
- ✅ Definicja i import grupy pl.rachuna-net/tools
- ✅ Definicja i import projektu pl.rachuna-net/infrastructure/opentofu/iac-gitlab
- ✅ Definicja i import projektu pl.rachuna-net/infrastructure/opentofu/modules/gitlab-group
- ✅ Definicja i import projektu pl.rachuna-net/infrastructure/opentofu/modules/gitlab-project
- ✅ Definicja i import projektu pl.rachuna-net/tools/vagrant
Utworzenie zasobów do OpenTofu
- ✅ Definicja grupy pl.rachuna-net/containers
- ✅ Definicja i utworzenie repozytorium pl.rachuna-net/containers/opentofu
- ✅ Definicja i utworzenie repozytorium pl.rachuna-net/gitlab-profile
- ✅ Definicja i utworzenie repozytorium pl.rachuna-net/containers/gitlab-profile
- ✅ Definicja i utworzenie repozytorium pl.rachuna-net/infrastructure/opentofu/gitlab-profile