@@ -1756,6 +1756,22 @@ dossier de l'image. Ce fichier sera directement copié dans
...
@@ -1756,6 +1756,22 @@ dossier de l'image. Ce fichier sera directement copié dans
l'!!acronym{ESP}, sans qu'une tentative de détermination automatique du
l'!!acronym{ESP}, sans qu'une tentative de détermination automatique du
point d'entrée à partir du fichier `nvram.dat` soit effectuée.
point d'entrée à partir du fichier `nvram.dat` soit effectuée.
## Remplacement de _Vagrant_ par _Docker_
L'utilisation de _Vagrant_ mise en place au début du projet s'est
révélée être un peu lourde à utiliser et peu adaptée au déploiement sur
un serveur en production. L'unique machine _Vagrant_ a donc été
remplaçée par trois conteneurs Docker: un pour le serveur
!!acronym{DHCP} (voir source dans la section !!ref{dhcp_dockerfile}), un
pour le serveur !!acronym{TFTP} (voir source dans la section
!!ref{tftp_dockerfile}) et un pour le serveur !!acronym{NFS} (voir
source dans la section !!ref{nfs_dockerfile}).
Le lancement de ces trois machines en simultané ainsi que leur
configuration est assuré par l'outil _docker-compose_ (voir source dans
la section !!ref{source_docker_compose}).
## Personnalisation d'images post-déploiement
## Personnalisation d'images post-déploiement
Un système a été conçu pour que l'utilisateur puisse choisir des
Un système a été conçu pour que l'utilisateur puisse choisir des
...
@@ -1835,78 +1851,6 @@ La personnalisation **2** est passive: elle remplace juste un fichier
...
@@ -1835,78 +1851,6 @@ La personnalisation **2** est passive: elle remplace juste un fichier
mais ne nécessite pas de mécanisme spécial sur la machine de déploiement
mais ne nécessite pas de mécanisme spécial sur la machine de déploiement
pour l'exécuter.
pour l'exécuter.
!!ifdef{PRINT_TODO}
# Architecture finale du projet
## Composants
**TODO: diagramme des composants du projet et description**
## Processus de déploiement
**TODO: diagramme du processus de déploiement et description complète de
ce dernier. Explication détaillées de la structure des scripts de
déploiement, de leurs possibilités et de leurs limitations.**
## Architecture réseau
**TODO: description de l'architecture réseau finale utilisée pour
développer et tester le système avec diagramme. Expliquer comment cette
architecture de test peut être transposée à une architecture de
production.**
## Processus de build
**TODO: expliquer comment sont construites les différentes parties du
projet. Expliquer les différentes parties du makefile et les différentes
images docker utilisées pour construire les différents composants.**
## Déploiement du serveur
**TODO: expliquer comment le serveur peut fonctionner à l'aide d'un
`docker-compose` réunissant les serveurs TFTP, NFS et DHCP. Expliquer
comment ces différentes parties sont utilisés dans un environnement de
développement, les limitations, et comment adapter cette configuration à
un environnement de production.**
## Structure des images
**TODO: expliquer exactement comment sont structurées les données des
images (raw et clonezilla).**
# Utilisation du système déployé
## Déployer une image sur un poste
Cette section contient une marche à suivre qui décrit les étapes pour
déployer une image sur un poste client quand un serveur est déjà
installé et configuré, que la machine est configurée pour démarrer sur
le réseau.
1. Démarrer la machine et attendre qu'elle
**TODO: expliquer pas à pas comment utiliser l'interface pour déployer
une image sur un client et les différentes inter-actions de
l'utilisateur, avec des captures d'écran, etc.**
## Création d'une image clonezilla
**TODO: expliquer pas à pas comment créer une image avec clonezilla et
comment l'ajouter au serveur de déploiement.**
## Création d'une image dd
**TODO: expliquer pas à pas comment créer une image avec clonezilla et
comment l'ajouter au serveur de déploiement.**
## Préparation d'une image pour qu'elle supporte le système de personnalisation
**TODO: expliquer comment préparer un système pour qu'il supporte le
système de personnalisation avec ansible, et comment créer les scripts
de personnalisation, avec un exemple type simple.**
!!endif{PRINT_TODO}
# Conclusion
# Conclusion
## Synthèse du travail effectué
## Synthèse du travail effectué
...
@@ -2058,6 +2002,12 @@ programmation des systèmes (_sIT_242_), systèmes d'exploitation
...
@@ -2058,6 +2002,12 @@ programmation des systèmes (_sIT_242_), systèmes d'exploitation
avancés (_sIT_384_), programmation avancée des systèmes (_sIT_632_) et
avancés (_sIT_384_), programmation avancée des systèmes (_sIT_632_) et
virtualisation des !!acronym{SI} (_sIT_632_).
virtualisation des !!acronym{SI} (_sIT_632_).
Le projet ne s'est pas déroulé exactement comme prévu: le chemin était
parsemé d'embuches et de problèmes qui ont fait que la plupart des
étapes ont pris plus de temps que prévu. Je suis cependant très
satisfait d'avoir pu fournir un système fonctionnel et efficace à la fin
de ce projet.
!!ifdef{PANDOC_PDF}
!!ifdef{PANDOC_PDF}
!!chapterwithoutnumber{Références}
!!chapterwithoutnumber{Références}
...
@@ -2074,7 +2024,7 @@ Cette annexe contient les listings des codes sources les plus importants
...
@@ -2074,7 +2024,7 @@ Cette annexe contient les listings des codes sources les plus importants
du projet.
du projet.
!!sourcefile{Makefile}{makefile}{configuration _GNU Make_ du projet}
!!sourcefile{Makefile}{makefile}{configuration _GNU Make_ du projet}
!!sourcefile{docker-compose.yml}{yaml}{configuration _docker-compose_ du serveur de déploiement}
!!sourcefile{docker-compose.yml}{yaml}{configuration _docker-compose_ du serveur de déploiement !!label{source_docker_compose}}
!!sourcefile{deployer/Dockerfile}{dockerfile}{configuration _Docker_ pour la construction de l'OS de déploiement !!label{deployer_dockerfile}}
!!sourcefile{deployer/Dockerfile}{dockerfile}{configuration _Docker_ pour la construction de l'OS de déploiement !!label{deployer_dockerfile}}
!!sourcefile{deployer/bootiful-deploy-log.service}{ini}{configuration de l'unité _Systemd_ des script de déploiement}
!!sourcefile{deployer/bootiful-deploy-log.service}{ini}{configuration de l'unité _Systemd_ des script de déploiement}
!!sourcefile{deployer/initramfs.conf}{bash}{configuration pour création d'un _initramfs_ pour démarrer avec !!acronym{NFS}}
!!sourcefile{deployer/initramfs.conf}{bash}{configuration pour création d'un _initramfs_ pour démarrer avec !!acronym{NFS}}
...
@@ -2085,12 +2035,12 @@ du projet.
...
@@ -2085,12 +2035,12 @@ du projet.
!!sourcefile{deployer/bootiful-deploy}{bash}{script de déploiement d'images}
!!sourcefile{deployer/bootiful-deploy}{bash}{script de déploiement d'images}
!!sourcefile{deployer/bootiful-save-image}{bash}{script utilitaire de création d'image raw}
!!sourcefile{deployer/bootiful-save-image}{bash}{script utilitaire de création d'image raw}
!!sourcefile{deployer/bootiful-reset-cache}{bash}{script utilitaire de réinitialisation du cache}
!!sourcefile{deployer/bootiful-reset-cache}{bash}{script utilitaire de réinitialisation du cache}
!!sourcefile{dhcp/Dockerfile}{dockerfile}{configuration _Docker_ du serveur !!acronym{DHCP}}
!!sourcefile{dhcp/Dockerfile}{dockerfile}{configuration _Docker_ du serveur !!acronym{DHCP} !!label{dhcp_dockerfile}}
!!sourcefile{dhcp/dhcpd.conf}{bash}{configuration du serveur !!acronym{DHCP}}
!!sourcefile{dhcp/dhcpd.conf}{bash}{configuration du serveur !!acronym{DHCP}}
!!sourcefile{grub/Dockerfile}{dockerfile}{configuration _Docker_ pour la compilation de !!acronym{GRUB}}
!!sourcefile{grub/Dockerfile}{dockerfile}{configuration _Docker_ pour la compilation de !!acronym{GRUB}}
!!sourcefile{nfs/Dockerfile}{dockerfile}{configuration _Docker_ du serveur !!acronym{NFS}}
!!sourcefile{nfs/Dockerfile}{dockerfile}{configuration _Docker_ du serveur !!acronym{NFS} !!label{nfs_dockerfile}}
!!sourcefile{nfs/exports}{bash}{configuration des partages du serveur !!acronym{NFS}}
!!sourcefile{nfs/exports}{bash}{configuration des partages du serveur !!acronym{NFS}}
!!sourcefile{tftp/Dockerfile}{dockerfile}{configuration _Docker_ du serveur !!acronym{TFTP}}
!!sourcefile{tftp/Dockerfile}{dockerfile}{configuration _Docker_ du serveur !!acronym{TFTP} !!label{tftp_dockerfile}}
!!sourcefile{tftp/tftpd-hpa}{bash}{configuration du serveur !!acronym{TFTP}}
!!sourcefile{tftp/tftpd-hpa}{bash}{configuration du serveur !!acronym{TFTP}}
!!sourcefile{tftp/tftpboot/boot/grub/grub.cfg}{bash}{configuration de !!acronym{GRUB} servie par !!acronym{TFTP}}
!!sourcefile{tftp/tftpboot/boot/grub/grub.cfg}{bash}{configuration de !!acronym{GRUB} servie par !!acronym{TFTP}}
!!sourcefile{postdeploy/bootiful-postdeploy}{bash}{script de post-déploiement qui exécute les playbooks _Ansible_ présents dans un dossier !!label{source_ansible_run}}
!!sourcefile{postdeploy/bootiful-postdeploy}{bash}{script de post-déploiement qui exécute les playbooks _Ansible_ présents dans un dossier !!label{source_ansible_run}}