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 # Bootiful
![Log book](doc/logbook.md) ![Logo du projet Bootiful](doc/images/bootiful_logo_final.svg)
\ No newline at end of file
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 ...@@ -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} !!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 ## Analyse
## Cas d'utilisation ## Cas d'utilisation
......
...@@ -199,6 +199,13 @@ d'un diagramme de Gantt. Ce diagramme est visible dans la figure ...@@ -199,6 +199,13 @@ d'un diagramme de Gantt. Ce diagramme est visible dans la figure
</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 ## Analyse
## Cas d'utilisation ## Cas d'utilisation
...@@ -1879,6 +1886,13 @@ Le lancement de ces trois machines en simultané ainsi que leur ...@@ -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 configuration est assuré par l'outil _docker-compose_ (voir source dans
la section ). 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 ## Personnalisation d'images post-déploiement
...@@ -2147,7 +2161,7 @@ LATEST_LOG := $(shell ls -1 nfs/nfsshared/log/*.log | tail -n 1) ...@@ -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 .PHONY: doc grub deployer start-server reprovision-server clean print_last_log help
# Builds everything # Builds everything
all: doc grub deployer all: grub deployer
# Builds PDF and markdown documents # Builds PDF and markdown documents
doc: doc:
...@@ -2242,7 +2256,7 @@ services: ...@@ -2242,7 +2256,7 @@ services:
- type: tmpfs - type: tmpfs
target: /nfsroot target: /nfsroot
- type: bind - type: bind
source: /run/media/araxor/bigdata/nfsshared source: ./nfs/nfsshared
target: /nfsshared target: /nfsshared
- type: bind - type: bind
source: /lib/modules source: /lib/modules
...@@ -3648,20 +3662,26 @@ echo "Starting logging stdout and stderr to $log_file..." ...@@ -3648,20 +3662,26 @@ echo "Starting logging stdout and stderr to $log_file..."
if [[ -n "$customization_choices" ]]; then if [[ -n "$customization_choices" ]]; then
start_step_batch "customizations deployment" start_step_batch "customizations deployment"
readonly customization_partitions_mount_dir="/bootiful/mounted_customization_partitions"
for customization_choice in $customization_choices; do for customization_choice in $customization_choices; do
customization="${customizations[customization_choice]}" customization="${customizations[$customization_choice]}"
customization_dir="$remote_image_customizations_dir/$customization" customization_dir="$remote_image_customizations_dir/$customization"
echo "Deploying customization '$customization' from '$customization_dir'" echo "Deploying customization '$customization' ($customization_choice) from '$customization_dir'"
for customization_partition in "$customization_dir"/*; do 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" 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" customization_partition_device="/dev/$customization_partition"
ensure_mounted "$customization_partition_device" "$customization_partition_mount_point" 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
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 fi
start_step_batch "EFI entrypoint file creation" start_step_batch "EFI entrypoint file creation"
......
No preview for this file type
Source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment