Skip to content
Snippets Groups Projects
Commit 6f0af763 authored by dimitri.lizzi's avatar dimitri.lizzi
Browse files

last changes!

parent 960a5deb
Branches master
No related tags found
No related merge requests found
# Bootiful
![Log book](doc/logbook.md)
\ No newline at end of file
![Logo du projet Bootiful](doc/images/bootiful_logo_final.svg)
Le sujet de ce travail de diplôme est le développement d’une solution de
déploiement de systèmes d’exploitation à la demande, pour une
utilisation dans le cadre d’une école d’informatique. À chaque démarrage
d’un poste de travail, l’utilisateur peut choisir quel système il
souhaite utiliser dans une liste prédéfinie. Il est aussi possible de
définir une liste de personnalisations qui permettent de configurer ce
système, comme par exemple l’installation de certains logiciels ou une
configuration de réseau spécifique. La première fois qu’un système
d’exploitation est choisi, une image contenant les données du système
d’exploitation est téléchargée depuis un serveur central. Cette image
est déployée sur le disque dur pour permettre son utilisation. Une copie
de l’image est aussi sauvegardée dans un cache situé à la fin du disque
dur, dans un format compressé, pour permettre de ne plus avoir à la
télécharger à nouveau les prochaines fois qu’elle devra être installée.
Une fois le déploiement terminé, les personnalisations choisies sont
appliquées, puis le système choisi est démarré et est utilisable jusqu’à
l’extinction de l’ordinateur. Au prochain démarrage, un nouveau système
d’exploitation sera de nouveau déployé. Ce mode de fonctionnement permet
aux élèves de l’école de toujours utiliser un système propre et
spécifique à leurs besoins immédiats. Des efforts ont été menés pour
faire en sorte que les déploiements se fassent le plus rapidement
possible, en économisant un maximum les ressources disque et réseau,
tout en fonctionnant avec des ordinateurs modernes. Le développement de
ce projet étant destiné à être continué après ce travail de diplôme, un
soin particulier a été apporté pour automatiser et simplifier au maximum
la construction et la mise en fonctionnement du système dans un
environnement réel.
- [Documentation](doc/rapport.md)
- [Journal de bord](doc/logbook.md)
\ No newline at end of file
......@@ -223,6 +223,13 @@ d'un diagramme de Gantt. Ce diagramme est visible dans la figure
!!pdfref{planning_gantt}{Diagramme de Gantt du planning}{images/planning}
Le logiciel de gestion de révisions _Git_ a été utilisé pour gérer les
différentes versions du code source du projet. Un dépôt a été créé sur
le serveur Git de !!acronym{HEPIA}. Il est disponible à l'adresse
suivante:
<https://gitedu.hesge.ch/dimitri.lizzi/bootiful>
## Analyse
## Cas d'utilisation
......
......@@ -199,6 +199,13 @@ d'un diagramme de Gantt. Ce diagramme est visible dans la figure
</figure>
Le logiciel de gestion de révisions _Git_ a été utilisé pour gérer les
différentes versions du code source du projet. Un dépôt a été créé sur
le serveur Git de <abbr title="Haute École du Paysage, d’Ingénierie et d’Architecture de Genève ">HEPIA</abbr>. Il est disponible à l'adresse
suivante:
<https://gitedu.hesge.ch/dimitri.lizzi/bootiful>
## Analyse
## Cas d'utilisation
......@@ -1879,6 +1886,13 @@ Le lancement de ces trois machines en simultané ainsi que leur
configuration est assuré par l'outil _docker-compose_ (voir source dans
la section ).
Pour simplifier le lancement du serveur, une cible `start-server` a été
créée dans le _Makefile_ du projet. Il suffit de lancer la commande
suivante pour construire et démarrer un serveur:
```bash
make start-server
```
## Personnalisation d'images post-déploiement
......@@ -2147,7 +2161,7 @@ LATEST_LOG := $(shell ls -1 nfs/nfsshared/log/*.log | tail -n 1)
.PHONY: doc grub deployer start-server reprovision-server clean print_last_log help
# Builds everything
all: doc grub deployer
all: grub deployer
# Builds PDF and markdown documents
doc:
......@@ -2242,7 +2256,7 @@ services:
- type: tmpfs
target: /nfsroot
- type: bind
source: /run/media/araxor/bigdata/nfsshared
source: ./nfs/nfsshared
target: /nfsshared
- type: bind
source: /lib/modules
......@@ -3648,20 +3662,26 @@ echo "Starting logging stdout and stderr to $log_file..."
if [[ -n "$customization_choices" ]]; then
start_step_batch "customizations deployment"
readonly customization_partitions_mount_dir="/bootiful/mounted_customization_partitions"
for customization_choice in $customization_choices; do
customization="${customizations[customization_choice]}"
customization="${customizations[$customization_choice]}"
customization_dir="$remote_image_customizations_dir/$customization"
echo "Deploying customization '$customization' from '$customization_dir'"
for customization_partition in "$customization_dir"/*; do
echo "Deploying customization '$customization' ($customization_choice) from '$customization_dir'"
for customization_partition_full in "$customization_dir"/*; do
customization_partition=$(basename "$customization_partition_full")
validate_with_regex "$customization_partition" '^sda[0-9]$' "customization sub-directory name does not match a partition of sda"
customization_partition_mount_point="/bootiful/mounted_customization_partitions/$customization_partition"
customization_partition_mount_point="$customization_partitions_mount_dir/$customization_partition"
customization_partition_device="/dev/$customization_partition"
ensure_mounted "$customization_partition_device" "$customization_partition_mount_point"
cp -RT "$customization_dir/$customization_partition/"
cp -RTf "$customization_partition_full/" "$customization_partition_mount_point/"
done
done
for customization_partition_mount_dir in "$customization_partitions_mount_dir"/*; do
umount "$customization_partition_mount_dir" ||
fatal_error "Cannot unmount '$customization_partition_mount_dir'"
done
fi
start_step_batch "EFI entrypoint file creation"
......
No preview for this file type
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment