Skip to content

Phase 4.4 — GitLab

Provisionnement de la VM via OpenTofu, configuration via Ansible.


Vue d'ensemble

GitLab CE héberge le code source et la CI/CD du projet. Authentification via Keycloak (OIDC), secrets depuis Vault.

Rôle Valeur
VM 102 — gitlab (192.168.1.21)
Nœud Proxmox pve01
Groupe Ansible gitlab
URL https://gitlab.mounik.ovh
RAM 8 Go (minimum recommandé)
TLS Traefik (VM 101) — GitLab écoute en HTTP

1. Provisionnement OpenTofu

# gitlab.tf — appel au module vm
module "gitlab" {
  source = "./modules/vm"

  name        = "gitlab"
  target_node = "pve01"
  vmid        = 102
  cores       = 4
  memory      = 8192
  balloon     = 4096
  disk_size   = "200G"
  ip          = "192.168.1.21"
  ssh_key     = local.ssh_key

  depends_on = [module.keycloak]
}

Exécution :

cd homelab-proxmox/opentofu
tofu plan -target=module.gitlab -out=tfplan
tofu apply tfplan

2. Configuration Ansible

Le playbook ansible/playbooks/04-gitlab.yml applique le rôle gitlab :

ansible-playbook -i inventory/homelab.yml playbooks/04-gitlab.yml

Le rôle gitlab : 1. Installe les dépendances (curl, openssh-server, postfix) 2. Ajoute le dépôt officiel GitLab CE et installe le paquet gitlab-ce 3. Configure /etc/gitlab/gitlab.rb (nginx HTTP, Vault, Let's Encrypt désactivé) 4. Reconfigure GitLab (gitlab-ctl reconfigure) 5. Active l'OIDC Keycloak via gitlab-rails runner 6. Installe et enregistre le GitLab Runner (shell, tag homelab)

Variable sensible : vault_token, vault_kc_gitlab_secret, gitlab_runner_token (à passer via Vault).


3. Intégration Vault (CI/CD)

Variables à configurer dans l'interface GitLab (Settings → CI/CD → Variables) :

Variable Source
VAULT_ADDR https://192.168.1.22:8200
VAULT_TOKEN Token créé dans Vault
HARBOR_PASSWORD vault kv get homelab/harbor
DD_API_TOKEN Interface DefectDojo
GITLAB_TOKEN GitLab.com (token push manifests)
ARGOCD_PASSWORD vault kv get homelab/argocd

4. Vérification

gitlab-ctl status
curl -I https://gitlab.mounik.ovh

Livrable : GitLab CE fonctionnel, OIDC Keycloak, Vault intégré, runner shell prêt.


Pour aller plus loin