Les logiciels

Pour développer les logiciels MytinyDC, j’utilise l’IDE « Eclipse », doté des plugins nodeclipse, Javascript et Bash. L’intégralité du code source est écrit en Bash et Javascript. La partie serveur est confiée à Nodejs (Javascript), le contrôle qualité est assuré par SonarQube, les tests unitaires exécutés avec  Mocha (fonctions client et serveur) et Selenium (navigation). Le code est stocké sur un Gitlab, doté de tout les fonctionnalités de travail en équipe. La documentation est rédigée sur LibreOffice et/ou Onlyoffice (Nextcloud).

J’ai choisi un modèle monolithique à base de plugins. Chaque fonctionnalité du Datacentre est représentée par un plugin (DNS, DHCP, Firewall, répartiteur de charge,…). Ceci permet une importante souplesse tant en terme d’utilisation que de codage. Les fonctions d’un plugin peuvent être utilisées par un autre. La partie serveur répond aux normes « Rest PI », les connexions aux serveurs, à gérer, se font au travers d’un canal SSH par échange de clés. Mon projet,  étant à seul but éducatif, j’ai par conséquent volontairement fait le choix de ne pas implémenter de framework, tels Bootstrap. Ce choix m’oblige à produire plus de lignes de codes, mais permet de démontrer le fonctionnement d’un processus de A à Z. J’implémente Jquery et le framework W3school pour la partie CSS. La documentation d’aide au codage est enrichie selon le cycle de développement.

Diagramme de séquences

J’ai développé un outils permettant de générer le diagramme de séquences d’un processus exécuté sur le navigateur. Son utilisation est simple : une ligne de code dans la partie client (navigateur), où vous souhaitez, en indiquant un « container » de l’IHM. Lors de son exécution, ce programme intercepte la pile d’exécution, et ajoute un bouton dans le container IHM indiqué. En cliquant sur ce dernier, un appel serveur (Rest Api), suivi de la pile, en paramètre, génère et présente le diagramme de séquences, dans un nouvelle onglet. Cette fonctionnalité présente deux intérêts : la mise à jour de la documentation plus rapidement, et une représentation très explicite de la pile d’exécution. Son implémentation côté serveur (NodeJS) est envisagée…

 

Diagramme de séquences

 

La gestion du Datacentre

J’ai commencé les développements logiciels il y a un an environ. L’application DCIM est à l’état de  » proof of concept (POC) ». Les morceaux de codes ont été rassemblés dans une application NodeJS. Tout ceci m’a permis d’assurer la faisabilité du cahier des charges de chaque plugin. Le cahier des charges est fait pour énoncer les fonctionnalités du programmes, ainsi que ses limites. Les POC concernent les services : DNS, DHCP/BOOT, OpenVPN, Monitoring, Haproxy pour la répartition de charge, lecture un contenu d’un fichier de log, Firewall/Routeur (iptables), l’hébergement de sites avec WordPress, l’hébergement d’un Nextcloud, et beaucoup d’autres tests effectués : stockage sur NAS externe, mise en place d’un groupe de serveurs de stockage avec GlusterFS, statistiques, provision automatisée d’un nouveau serveur.

Je réalise actuellement les développements de la première version de MytinyDC-IM . Mon choix s’est porté sur les langages Javascript et Bash. Simples à apprendre pour les novices, très puissants pour les experts, et supporté tant côté client, que côté serveur. Mais le plus gros avantage reste quand même que ce type de programmation évite de « switcher » entre différents langages. Vous pouvez de plus partager les développements entre la partie serveur, la partie cliente.

La première étape consiste à paramétrer le réseau du Datacentre, j’ai démarré par la gestion du DNS. Le second Plugin sera DHCP/Bootp. Le POC (proof of concept) BOOT/DHCP me permet de provisionner un serveur vierge en moins de 4 mn de manière automatisée. L’intégralité de ce processus est écrit en langage Bash. Les serveurs Raspberry ou Rock64 ont la possibilité de démarrer à partir du réseau (BOOTP/DHCP/NFS/TFTP). C’est une fonctionnalité importante pour un Datacentre.

Le développement consiste à la construction d’un outil chargé de générer des fichiers de configuration d’un service et de les présenter à l’administrateur. Qui décidera ou pas leur mise en production. Cette méthode pédagogique permet de comprendre, avec la documentation d’administration, le contenu des fichiers de configuration d’un service logiciel.

La documentation, le cœur du projet, est composés d’une documentation d’administration système et de cahiers des charges, enrichis de multiples citations, découvertes sur Internet.

Le graphique ci-dessous représente les plugins en cours de développement

L’application MYTINYDC-IM

Le tronc applicatif, n’est qu’un container à plugins. Il contient les fonctions d’authentification, et les libraires partagées à tous les plugins. Le paquet de livraison (DEBIAN) contient les plugins :

  • DNS – Configuration du service Bind9
  • DHCP/BOOTP/Installation automatisée (provision automatique d’un nouveau serveur). Mutualisation d’un seul et même plugin
  • FIREWALL – Configuration iptables IPV4
  • LOGSTREAM – Consulter les logs d’un serveur en streaming via une websocket/SSH
  • LOADBALANCER – Haproxy (Layer7) – en développement

Installer Mytinydc-IM – cliquez ici

Documentation développeur

Pour vous assister dans le développement d’un plugin, j’ai créé une documentation « développeur ». Cette procédure permet de prendre en main rapidement le framework, et surtout de rendre homogène l’application (code couleur, explication de certaines fonctions, etc..). Cliquez ici pour récupérer la dernière version.

L’application MYTINYDC-Openvpn

Les images systèmes (en cours de fabrication)

  1. Image Raspberry PI – Permettant la mise en place du démarrage par le réseau (carte SD).
  2. Image Rock64 – Permettant la mise en place du démarrage par le réseau (carte SD).
  3. Image Raspberry PI – Serveur DNS/DHCP-BOOTP Permettant de créer le flux de démarrage d’une unité par le réseau (carte SD).

Post-installation : login pi/mytinydc – apt update – apt upgrade – dkpg-reconfigure tzdata – reboot – passer root : sudo bash