This is the multi-page printable view of this section.
Click here to print.
Return to the regular view of this page.
iac-gitlab

IAC do zarządzania środowiskiem GitLab.
Repozytorum: iac-gitlab
Repozytorium zawierające infrastrukturę jako kod (IaC) do zarządzania środowiskiem GitLab przy użyciu OpenTofu. Umożliwia automatyzację tworzenia, konfiguracji i utrzymania zasobów GitLab.
Architektura rozwiązania
flowchart TB
subgraph s1["opentofu module"]
n2["gitlab-group"]
n1("gitlab-project")
end
A["iac-gitlab"] --> n1
A --> n2
n2@{ shape: rounded}
Przykładowy układ plików
Jak można zauważyć katalogi i pliki odzwierciedlają ułożenie repozytoriów w rzeczywistości.
.
├── data
│ ├── allowed_avatar_group_types.json
│ ├── allowed_avatar_project_types.json
│ ├── allowed_project_types.json
│ ├── group_badges.json
│ └── labels.json
├── _data.tf
├── images
│ ├── group
│ │ └── *.png
│ └── project
│ └── *.png
├── _locals.tf
├── pl.rachuna-net
│ ├── apps
│ │ ├── docs.tf
│ │ └── _locals.tf
│ ├── apps.tf
│ ├── cicd
│ │ ├── gitlab-ci.tf
│ │ └── _locals.tf
│ ├── cicd.tf
│ ├── containers
│ │ ├── buildah.tf
│ │ ├── gohugo.tf
│ │ ├── _locals.tf
│ │ ├── opentofu.tf
│ │ ├── python.tf
│ │ ├── semantic-release.tf
│ │ └── trivy.tf
│ ├── containers.tf
│ ├── infrastructure
│ │ ├── _locals.tf
│ │ ├── opentofu
│ │ │ ├── iac-gitlab.tf
│ │ │ ├── _locals.tf
│ │ │ ├── modules
│ │ │ │ ├── gitlab-group.tf
│ │ │ │ ├── gitlab-project.tf
│ │ │ │ └── _locals.tf
│ │ │ └── modules.tf
│ │ └── opentofu.tf
│ ├── infrastructure.tf
│ └── _locals.tf
├── pl.rachuna-net.tf
└── _providers.tf
1 - Grupy repozytoriów

Tworzenie grupy repozytoriów w GitLab za pomocą OpenTofu

Niniejsza sekcja dokumentacji opisuje proces tworzenia grupy repozytoriów w GitLab przy użyciu OpenTofu. Prezentowane podejście umożliwia automatyczne zarządzanie strukturą repozytoriów, co wspiera podejście Infrastructure as Code (IaC).
Repozytorium GitLab zawierające definicję
🔗 GitLab: pl.rachuna-net/infrastructure/opentofu/iac-gitlab
Repozytorium modułu opentofu - gitlab-group
🔗 GitLab: pl.rachuna-net/infrastructure/opentofu/modules/gitlab-group
Korzyści wynikające z użycia OpenTofu
OpenTofu pozwala na:
- Automatyzację tworzenia i zarządzania grupami repozytoriów,
- Wersjonowanie konfiguracji, co ułatwia kontrolę zmian,
- Powtarzalność konfiguracji, eliminując błędy manualne.
Definiowanie grupy w OpenTofu
Aby utworzyć grupę repozytoriów w GitLab, należy dodać odpowiednią definicję do pliku konfiguracyjnego OpenTofu.
Przykładowy plik konfiguracyjny OpenTofu
Definicja grupy
📄 Ścieżka pliku: pl.rachuna-net/containers.tf
module "_containers" {
source = "git@gitlab.com:pl.rachuna-net/infrastructure/opentofu/modules/gitlab-group.git?ref=v1.0.0"
name = "containers"
description = "Repozytoria z obrazami kontenerowymi."
parent_group = local.parent_name
visibility = "public"
default_branch = "main"
avatar = "containers"
}
module "containers" {
source = "./containers/"
}
Definicja parametrów dla dzieci
📄 Ścieżka pliku: pl.rachuna-net/containers/_locals.tf
locals {
parent_name = "pl.rachuna-net/containers"
project_type = "container"
}
2 - Repozytorium kodu

Tworzenie repozytorium w GitLab za pomocą OpenTofu

Niniejsza sekcja dokumentacji opisuje proces tworzenia repozytoriów w GitLab przy użyciu OpenTofu. Prezentowane podejście umożliwia automatyczne zarządzanie repozytoriami, co wspiera podejście Infrastructure as Code (IaC).
Repozytorium GitLab zawierające definicję
🔗 GitLab: pl.rachuna-net/infrastructure/opentofu/iac-gitlab
Repozytorium modułu opentofu - gitlab-group
🔗 GitLab: pl.rachuna-net/infrastructure/opentofu/modules/gitlab-project
Korzyści wynikające z użycia OpenTofu
OpenTofu pozwala na:
- Automatyzację tworzenia i zarządzania grupami repozytoriów,
- Wersjonowanie konfiguracji, co ułatwia kontrolę zmian,
- Powtarzalność konfiguracji, eliminując błędy manualne.
Definiowanie grupy w OpenTofu
Aby utworzyć repozytorium w GitLab, należy dodać odpowiednią definicję do pliku konfiguracyjnego OpenTofu.
📄 Ścieżka pliku: pl.rachuna-net/containers/opentofu
module "opentofu" {
source = "git@gitlab.com:pl.rachuna-net/infrastructure/opentofu/modules/gitlab-project.git?ref=v1.0.0"
name = "opentofu"
archived = false
description = "Obraz Dockerowy z narzędziem opentofu."
visibility = "public"
tags = ["docker", "opentofu"]
avatar = "opentofu"
parent_group = local.parent_name
project_type = "container"
build_git_strategy = "clone"
gitlab_ci_path = "containers/docker.yml@pl.rachuna-net/cicd/gitlab-ci"
# sonarqube
is_enabled_sonarqube = true
sonarqube_cloud_project_id = "pl.rachuna-net_opentofu"
# mirror to github
mirror_url = format(
"https://%s:%s@github.com/%s/%s.git",
data.vault_kv_secret_v2.github.data["owner"],
data.vault_kv_secret_v2.github.data["token"],
data.vault_kv_secret_v2.github.data["owner"],
"pl.rachuna-net.containers.opentofu"
)
variables = {
PUBLISH_VAULT_SECRET_PATH = {
description = "Ścieżka do sekrety Vault, gdzie będą publikowane zmienne środowiskowe",
value = "pl.rachuna-net/containers/opentofu:CONTAINER_IMAGE_OPENTOFU"
}
PUBLISH_VAULT_VALUE_VARIABLE = {
description = "Nazwa zmiennej środowiskowej, która będzie publikowana w Vault",
value = "CONTAINER_IMAGE_VERSION"
}
}
}