Informations sur le stage

Entreprise : Airbus Safran Launchers

Lieu : St-Médard-en-Jalles

Date : 20 Juin – 2 Septembre

Maître de stage : Julien DUBOC

Chef de service : Sébastien LABESQUE

Mission : Recompilation d'un LiveCD avec implémentation de l'utilitaire Redobackup & Recovery, permettant la sauvegarde et la restauration de systèmes, de disques, de partitions ainsi que l'intégralité des données utilisateurs.

Modifications de scripts Shell/Perl/XML pour gérer l'ajout de fonctionnalités tel que la connexion à un serveur WebDav ou encore un mode de clonage directe entre les partitions. Modification des menus et de l'interface en générale. Traduction entière de l'utilitaire.

Informations complémentaires : Semaine 7 et 8, Airbus Safran Launchers est en fermeture. C'est pourquoi aucun article n'a été rédigé pour ces deux semaines.


AIRBUS SAFRAN LAUNCHERS

Airbus Safran Launchers (ASL) est une coentreprise 50-50 créée le 1er Janvier 2015 par Airbus et Safran pour notamment finaliser la nouvelle génération de lanceurs Ariane 6.

Elle est leader mondial de l'accès à l'espace.

Avec l'ensemble de ses filiales et partenaires, ASL conçoit, développe, produit et vend pour l'ensemble du marché mondial, une offre unique de lanceurs, de services associés et de produits dérivés dans les domaines civils et militaires.

Airbus Safran Launchers assure la maîtrise d’œuvre du développement et de la production des lanceurs Ariane 5 et Ariane 6, des études et de la R&T des futurs programmes de lanceurs européens et du système de missiles balistiques de la composante océanique de dissuasion française.

Elle anime un réseau industriel intégré au cœur de l'Europe, symbole de coopération franco-allemande dans un secteur ultra technologique et stratégique, et propose de nombreux projets à plus de 8000 collaborateurs.

samedi 30 juillet 2016

Semaine 6 - Développement et Rédaction

Au début de la semaine se déroule la réunion avec Julien, mon maître de stage. Je suis plutôt bien avancé dans ma mission de stage puisque j'ai implémenté le service WebDav qui fonctionne maintenant très bien sur ma machine virtuelle. J'ai créé la case « Cloner » et je dois maintenant la développer en XML pour la partie graphique, puis Perl pour la partie traitement.

Ainsi, j'ai donc repris le même schéma que pour la partie Sauvegarder de l'utilitaire RedoBackup, c'est à dire que j'ai réitéré la même procédure mais sans garder la sauvegarde. Voici donc les étapes du mode « clonage de disque » :

1. Choix du disque à cloner
2. Choix de la partition à cloner
3. Choix du disque qui reçoit le clone
4. Choix de la partition qui reçoit le clone
5. Clonage

La partie graphique reste la même et les fonctions de base de même. C'est à dire que j'ai gardé les méthodes permettant de trouver les lecteurs sur l'ordinateur,  permettant de lister les partitions etc.… Ce qui change en réalité est la partie où l'on fait appel à « partclone ».

Dans le mode « sauvegarder », partclone est utilisé comme suit :

print"*** Exécution de: ($tool-c -F -L /partclone.log -s /dev/$part| gzip -c --fast | split -d -a 3 -b 2048m - /$dest/$file"."_part$pn. ) 2>&1 |\n" ;

Ici :
- $tool est une variable qui contient l'extension de la partition (extfs/fat/ntfs/hfsp/jfs/ufs etc.… )
(Voir la fonction which_backup_tool() pour y trouver toutes les extensions possibles)
- « -c » permet le clonage (--clone)
- « -F » permet de forcer la commande (--force)
- « -L » permet de spécifier un fichier de log (--logfile)
-  /partclone.log est le fichier de log spécifié à l'aide de -L
- « -s » permet de spécifier le lecteur source (--source)
- /dev/$part est le lecteur source

Le reste de la commande permet la sauvegarde du lecteur choisi dans la première partie de la commande, dans un dossier.

Et puis, après avoir bien étudié cette commande, j'ai créé une nouvelle commande permettant le clonage directe de disque en disque.




Ainsi, la commande est la suivante :

print "*** Exécution de: ( $tool-b -d -s /dev/$part-o /dev/$part2-L /partclone.log )2>&1 |\n" ;






Ici :

- $tool contient toujours l'extension (ex : partclone.ext2)
- « -b » permet de cloner de lecteur en lecteur (--dev-to-dev)
- « -d » pour le debug (--debug)
- « -s » permet de choisir le lecteur source (--source)
- « -o » permet de choisir le lecteur de destination (--output)
- « -L » permet de choisir un fichier de log (--logfile)

Après avoir enregistré le fichier de traitement de RedoBackup, j'ai régénéré le filesystem afin que les changements soient bien pris en compte, puis j'ai recompilé l’ISO.
Une fois dans la machine virtuelle, j'ai testé mon développement sur la partie clonage directe.
J'ai créé des fichiers aléatoirement sur une des partitions de mon premier disque dur virtuel, puis je l'ai cloné sur une partition de mon deuxième disque dur virtuel qui est entièrement vide.
À la fin de la procédure, la partition de mon deuxième disque qui était vide contient bien maintenant tous les fichiers que j'avais préalablement créés sur la première.
Le clonage fonctionne donc parfaitement.

Juste avant la fin de la semaine, durant mes nombreux tests, je me suis rendu compte que le client WebDav qui fonctionne parfaitement, ne permet qu'un transfert de 2GB maximum. Or le but de ce stage est de pouvoir sauvegarder et restaurer des images de disques. Donc les sauvegardes seront bien plus volumineuses que 2GB. C'est pourquoi j'ai dû commencer les recherches pour trouver un autre client permettant un transfert plus important.

Étant donné que AIRBUS SAFRAN LAUNCHERS ferme ses portes la semaine 7 pour la plupart des stagiaires et la semaine 8 pour tout le monde, je n'ai rien pu faire de plus durant ces deux semaines que de rédiger mon rapport de stage et préparer ma soutenance que je présenterai à l'ensemble de mon service le mardi 23 Août.



Ce document et les informations qu'il contient sont propriété d'Airbus Safran Launchers, Il ne doit pas être utilisé à d'autres fins que celles pour lesquelles il a été remis. Il ne peut être ni reproduit, ni divulgué à des tiers (en tout ou partie) sans l'accord préalable et écrit d’Airbus Safran Launchers. Airbus Safran Launchers – Tous droits réservés. // This document and the information it contains are property of Airbus Safran Launchers. It shall not be used for any purpose other than those for which it was supplied. It shall not be reproduced or disclosed (in whole or in part) to any third party without Airbus Safran Launchers prior written consent. Airbus Safran Launchers – All right reserved.



samedi 23 juillet 2016

Semaine 4 & 5 - Scripts et Intégration de fonctionnalités



La quatrième semaine commence comme toutes les autres avec un debriefing de la semaine passé et un briefing pour la semaine à venir. Ainsi, maintenant que la partie compilation est terminée, je passe à la partie script et intégration de fonctionnalités.

Dans un premier temps je vais devoir modifier les fichiers de configuration de redobackup :
- XML pour le front end
- Perl pour le back end


J'ai en tout premier lieu traduit l'utilitaire RedoBackup pour qu'il soit entièrement en français.
Cela est possible en modifiant les fichiers :
- /sbin/redobackup.pl
- /usr/share/redo/redobackup.glade

Une fois l'utilitaire entièrement traduit, vient l'intégration de WebDav.
WebDav (Web-based Distributed Authoring and Versioning) est un protocole (plus précisément, une extension du protocole HTTP) permettant de simplifier la gestion de fichiers avec des serveurs distants. Il permet de récupérer, déposer, synchroniser et publier des fichiers (et dossiers) rapidement et facilement. L'objectif principal de WebDav est de rendre possible l'écriture à travers le web et pas seulement la lecture de données. WebDav permet à plusieurs utilisateurs d'éditer le contenu d'un dossier web simultanément. Il gère les droits d'accès aux fichiers (ou dossiers), en verrouillant momentanément les fichiers et dossiers édités.

L'intégration de cet outil est primordial et est un des points clés de ce stage car le but au final est d'avoir un serveur WebDav et un accès depuis le poste client pour y stocker les backups effectués. Ainsi nous pourrons sauvegarder une partition ou un système entier sur le serveur et le récupérer depuis une autre machine pour y restaurer le système sur un autre disque et/ou partition.



Pour ce qui est de l'intégration WebDav, il y a cette fois-ci encore plusieurs étapes :

A / Installation du serveur WebDav
1. Installer les modules nécessaires
2. Générer un certificat (seulement pour un serveur WebDav sécurisé SSL (https://))
3. Configurer les fichiers Apache
4. Déclarer le serveur virtuel
5. Créer la base utilisateurs
6. Donner les droits d'accès à Apache
7. Configurer le firewall
------ Vous pouvez vous connecter sur https://votre_ip/ dans votre navigateur ------
8. Installer les modules WebDav
9. Configurer les fichiers pour WebDav et les autorisations
10. Créer le fichier de mot de passe pour le server
11. Éditer le fichier de configuration SSL par défaut
12. Recharger et redémarrer Apache



B / Intégration WebDav dans le LiveCD

1. Installer davfs2 ( apt-get –yes install davfs2 )
2. Dans le fichier /sbin/redobackup.pl :

- J'ai ajouté à la fonction backup_source_network_changed () : Une condition si WebDav est choisi :

elsif ( $typeeq'WEBDAV' ) {
                # It's a manually-entered WEBDAV share
                $server = "//URL/FOLDER" ;
      }

- J'ai ajouté le même bout de code pour la fonction restore_source_network_changed ()

- J'ai ajouté dans la fonction mount_data () : Une condition pour monter un répertoire avec le serveur WebDav :

elsif (/WEBDAV/) {
 # Mount a WEBDAV server
my$ftpargs=' ' ;
my$url=$status{'mount_source'};
$url=~ s/\/$//g# supprime le dernier slash
my$user =$status{'mount_user'};
my$pass=$status{'mount_pass'};
my$dav= HTTP::DAV->new();
$dav->credentials(-url=>$url, -user=>$user, -pass=>$pass);
$dav->open(-url=>$url);

# Ceci fonctionne avec point de montage sur /mnt/backup par exemple.
print"Executing:mount.davfs$status{'mount_source'} ".MOUNT_POINT." \n";
system("printf '$user\n$pass\ny' | mount.davfs ".$url." ".MOUNT_POINT);
}

Il est maintenant possible d'effectuer une sauvegarde de partitions, de disques et de système entier sur un serveur WebDav
Le dossier où s'effectuent les sauvegardes est donc : https://ip_address/folder_webdav/


Après avoir intégré la connexion au serveur WebDav, l'étape suivante consiste à créer entièrement un nouveau mode (mixte entre le mode « Backup » et le mode « Restore »), qui permettra de sauvegarder directement un disque/partition/système sur un autre disque sans passer par une sauvegarde. Il s'agira en réalité de « Cloner » le media.

J'ai donc développé un nouveau mode que j'ai ajouté au menu principal :


Avant : Mode « Sauvegarder » et « Restaurer » uniquement :

 




Après : Ajout du mode Sauver & Restaurer (Cloner) :







Ce document et les informations qu'il contient sont propriété d'Airbus Safran Launchers, Il ne doit pas être utilisé à d'autres fins que celles pour lesquelles il a été remis. Il ne peut être ni reproduit, ni divulgué à des tiers (en tout ou partie) sans l'accord préalable et écrit d’Airbus Safran Launchers. Airbus Safran Launchers – Tous droits réservés. // This document and the information it contains are property of Airbus Safran Launchers. It shall not be used for any purpose other than those for which it was supplied. It shall not be reproduced or disclosed (in whole or in part) to any third party without Airbus Safran Launchers prior written consent. Airbus Safran Launchers – All right reserved.





samedi 2 juillet 2016

Semaine 2 & 3 - Approfondissement et Recompilation

Lors de la deuxième semaine je suis passé à l'étape suivante qui consiste à compiler un nouveau liveCD avec une version plus récente d'Ubuntu (soit : Xenial 16.04).

 La gestion des fichiers dans les dossiers ainsi que l'intégration des paquets selon les versions sont totalement différentes entre Xenial et Precise qui a maintenant 4 ans. Ainsi pour chaque étape et notamment celle de la préparation de l’ISO, il manque des fichiers à certains endroits. Ces fichiers étant nécessaires au bon fonctionnement du liveCD, et n'étant pas capable de générer le filesystem correctement, je n'ai pas pu rester sur cette version.

J'ai donc en milieu de deuxième semaine opté pour une version antérieure (celle précédant Xenial) Wily (15.10) et je me suis heurté quasiment aux mêmes problèmes.

J'ai trouvé par la suite une version qui ne présente pas les mêmes erreurs, Yakkety (16.10) qui n'est pas encore sorti officiellement mais les dépôts sont tout à fait accessibles. Contre toute attente, cette version a fonctionné et j'ai donc pu créer un liveCD à partir de cette distribution.
En fin de deuxième semaine, mes deux ISO d'Ubuntu se lancent proprement ainsi que l'utilitaire Redobackup.

Au début de la troisième semaine, Julien DUBOC, mon maître de stage, est venu faire un debriefing avec moi pour savoir où j'en étais et me donner les prochaines étapes à réaliser. Maintenant que les versions Ubuntu sont compilées, je vais devoir recompiler à nouveau pour implémenter Redobackup sur un liveCD avec une distribution Debian. Cette fois-ci, une seule compilation est nécessaire puisque je ne dois tester qu'avec la dernière version de Debian (Jessie 8).



J'ai tout d'abord testé le tutoriel pour Ubuntu en adaptant pour Debian (changement de la commande debootstrap, changement des paquets d'installation, changement des dépôts, etc.…). Le soucis est que pour Ubuntu, le liveCD fonctionne à l'aide de casper, lupin-casper, linux-generic et ce genre de paquets qui aident à la construction du noyau Ubuntu et du Kernel. Ainsi, après de multiples tentatives, j'ai laissé le tutoriel Ubuntu de côté et ai entamé des recherches pour savoir comment compiler un liveCD sous Debian (et puis je n'avais plus qu'à installer RedoBackup par la suite).

De très nombreux sites proposent des solutions pour créer un ISO Debian mais très peu ont fonctionné. Les paquets nécessaires à l'installation de RedoBackup (tels que Adeskbar, Plymouth (pour la gestion des interfaces/fonds d'écran et chargement), etc ….) ne s'installent pas correctement ou même pas du tout pour certains. Ainsi, je me suis mis à télécharger les paquets manquant directement via le web puis je les ai installé via le gestionnaire d'archive intégré à Debian. Je me suis aussi heurté à des soucis de Kernel, et n'ayant que très peu d'expérience à ce sujet, j'ai du recommencer plusieurs fois la compilation.

Au final, après une semaine pour régler toutes les erreurs, l’ISO charge dans VirtualBox, l'interface du menu n'est pas satisfaisante (bleu marine et noir avec police en blanc), mais la distribution Debian se lance et RedoBackup par la suite.



La première étape concernant la compilation de liveCD est donc terminée. Je garde donc la version Yakkety 16.10 d'Ubuntu pour la suite.












Ce document et les informations qu'il contient sont propriété d'Airbus Safran Launchers, Il ne doit pas être utilisé à d'autres fins que celles pour lesquelles il a été remis. Il ne peut être ni reproduit, ni divulgué à des tiers (en tout ou partie) sans l'accord préalable et écrit d’Airbus Safran Launchers. Airbus Safran Launchers – Tous droits réservés. // This document and the information it contains are property of Airbus Safran Launchers. It shall not be used for any purpose other than those for which it was supplied. It shall not be reproduced or disclosed (in whole or in part) to any third party without Airbus Safran Launchers prior written consent. Airbus Safran Launchers – All right reserved.