GitLab CE — kamino
Hors DR critique (Phase 2). GitLab CE self-hosted sur kamino pour héberger les submodules minfra-v2 + CI/CD.
Contexte
kamino (10.0.2.11, DMZ) = host Docker dédié à GitLab CE Omnibus + GitLab Runners. Une fois up:
git@kamino.minfra.in:minfra-v2/<module>.git→ URL des submodules (cf.gitmodules)- Bootstrap DR : utiliser GitHub miroir tant que GitLab pas up
- CI/CD : runners docker exécutent jobs
.gitlab-ci.yml
Prérequis
- kamino VM déployée (
08-vms-terraform) - NFS mount
/mnt/naspour GitLab data (10-nfs-mount-vms) - Au moins 16 GB RAM (GitLab gourmand)
- DNS
kamino.minfra.inrésolu par Unbound
Lancer setup smart
task gitlab:setup
Logique 3 étapes:
- Check UI up : skip si
https://kamino.minfra.in/users/sign_inretourne 200/302 - Deploy : ansible-playbook
gitlab-deploy.yml(~10 min, install + premier reconfigure) - PAT sync : génère Personal Access Token admin → chiffre dans SOPS
git-tokens.yml
Verify: curl -kI https://kamino.minfra.in/users/sign_in | head -1
Lancer deploy force (debug)
Skip le check UI, force re-deploy:
task gitlab:deploy
Verify: ssh kamino.minfra.in ‘docker ps | grep gitlab’
Reconfigure (après edit gitlab.rb)
Quand tu modifies roles/gitlab/templates/gitlab.rb.j2, applique:
task gitlab:reconfigure
Exécute gitlab-ctl reconfigure dans container.
Verify: ssh kamino.minfra.in ‘docker exec gitlab gitlab-ctl status | grep run’
Backup GitLab
task gitlab:backup
Lance gitlab-backup create → dump dans /mnt/nas/gitlab/backups/. Rétention 7 jours config GitLab.
Verify: ssh kamino.minfra.in ‘ls /mnt/nas/gitlab/backups/‘
Sync submodules vers GitLab
Une fois GitLab up, migrer submodules depuis GitHub miroir:
task submodule:extract MODULE=ansible MODULE_PATH=infra/ansible
task submodule:attach MODULE=ansible MODULE_PATH=infra/ansible
extract = crée repo dans GitLab + push history. attach = update .gitmodules URL.
Verify: cat .gitmodules | grep kamino.minfra.in
Récupérer PAT pour CI/CD
sops -d infra/ansible/inventory/secrets/git-tokens.yml | grep gitlab_admin_pat
Token PAT admin (rôle api + read_repository + write_repository). Usage dans CI runners et scripts.
Verify: sops -d infra/ansible/inventory/secrets/git-tokens.yml | grep -q gitlab_admin_pat
URLs GitLab
| URL | Rôle |
|---|---|
| https://kamino.minfra.in | UI GitLab |
| https://kamino.minfra.in/admin | Admin |
| https://kamino.minfra.in/api/v4 | API REST |
ssh://git@kamino.minfra.in:22 | Git SSH |
Suite logique
- Setup runners docker pour CI (intégré dans
gitlab:deploy) - Migration GitHub → GitLab des 10 submodules
- Pipeline CI minfra-v2 (lint + build + deploy via Ansible)
Hors périmètre
- GitLab Enterprise features (CE only)
- GitLab Pages (différé)
- Mirror push GitHub auto (déjà via .gitmodules backup)
- GitLab Container Registry (vision image local OK)