La migration de ces outils est composée de deux parties :

  • Les outils du legacy : Kanboard (gestion de projet avec tableau Kanban) et Gitea (stockage et gestion de code/configuration, similaire à GitHub et GitLab)

  • Les outils à migrer : Oxidized (sauvegarde des équipements de backbone), NetBox (inventaire des appareils du réseau, adresses IP, etc.)

Le legacy

Migration de Kanboard

La migration de Kanboard a été simple à réaliser. Elle s’est découpée en plusieurs étapes :

  • Identification des VM
  • Sauvegarde de la base de données PostgreSQL
  • Création du Terraform pour déployer Kanboard et PostgreSQL sur le cluster Kubernetes
  • Importation de la sauvegarde de la base de données
  • Mise en production

Identification des VM

Le legacy dispose d’un schéma qui décrit comment tout est interconnecté et où se trouvent les différentes VM. Dans notre cas, il y avait deux bulles :

  • Business : pour les VM comme celle d’Oxidized (donc avec un accès au réseau de l’entreprise)

  • Management : pour les VM utilisées pour gérer l’infrastructure.

Dans le cas de Kanboard, il y avait deux VM : une pour PostgreSQL et une pour l’application.

Sauvegarde de la base de données

Pour sauvegarder la base de données, j’ai utilisé l’outil intégré à PostgreSQL, pg_dump. La commande avait cette structure :

pg_dump -U <utilisateur> -h <hôte> -F c -b -v -f <chemin/vers/dump> <nom_de_la_base>

Avec les valeurs réelles :

pg_dump -U kanboard -h localhost -F c -b -v -f /root/dumpkanboard kanboard
cp /root/dumpkanboard /home/nphilipsinibaldi/dumpkanboard
chown -R nphilipsinibaldi:nphilipsinibaldi /home/nphilipsinibaldi/dumpkanboard

Ensuite, j’ai copié la base de données sur mon poste avec la commande scp (similaire à cp, mais à travers SSH). J’aurais également pu utiliser un outil comme rsync :

mkdir -p /home/nphilipsinibaldi/workspace/backup/
scp nphilipsinibaldi@kanboard.management.31tls00.ef-fr.net:/root/dumpkanboard /home/nphilipsinibaldi/workspace/backup/dumpkanboard

Création du Terraform pour déployer Kanboard et PostgreSQL sur le cluster Kubernetes

Le code Terraform est présent dans le dépôt Git sur mon GitLab à cette adresse : place holder

Importation de la sauvegarde de la base de données

Pour réimporter la base de données, j’ai d’abord déployé uniquement le manifeste concernant PostgreSQL, puis, avec kubectl, j’ai fait un proxy pour exposer le port de la base en local afin de pouvoir y réimporter les données.

kubectl -n <namespace> port-forward svc/<nom-du-service> 5432:5432 

Mise en production

La mise en production est simple : tout déployé.

Migration de Gitea

La migration de Gitea n’a pas été compliquée :

  • Copie en local de tous les dépôts
  • Création du Terraform pour déployer Gitea et PostgreSQL sur le cluster Kubernetes
  • Création d’une clé d’API sur Gitea et utilisation d’un script

Copie en local de tous les dépôts

Pour la copie, j’ai simplement utilisé des commandes git clone.

Création du Terraform pour déployer Gitea et PostgreSQL sur le cluster Kubernetes

Le code Terraform est présent dans le dépôt Git sur mon GitLab à cette adresse : place holder

Création d’une clé d’API sur Gitea et utilisation d’un script

La clé d’API a été créée avec l’utilisateur par défaut, ici eurofiber, disposant de tous les droits d’administration.

Ensuite, j’ai rédigé un script permettant, à partir d’un dossier, de recréer toute l’arborescence des organisations et de réimporter tous les dépôts dans le nouveau Gitea :

mettre le script ici

La nouvelle infrastructure

Oxidized

Pour Oxidized, le procédé était différent. J’ai uniquement eu à écrire le code Terraform permettant de le déployer sur le cluster Kubernetes. Ce code est disponible dans mon GitLab.

La méthode de fonctionnement reste identique à celle du legacy. Les principales différences résident dans la version d’Oxidized et la méthode de déploiement.

NetBox

Concernant Netbox, le procede etait grossierement le meme, il a fallu :

  • Backup la base de donnees
  • Faire le code Terraform pour deployer le Helm Chart avec la meme version de NetBox (Une template avec des manifests Kubernetes qui se genere a l’aide d’un fichier de variables)
  • Reimporter la base de donnees (de la meme maniere que Kanboard)
  • Mettre a jour le netbox
  • Refaire la base d’utilisateur avec tout leurs droits