NAME
edix_fille - Evolution du système edix pour un besoin spécifique.
CREATION D'UNE MACHINE FILLE
Création d'un utilisateur
Une machine fille part d'une machine clone. Sur cette machine clone il y a seulement les trois utilisateurs usuels d'edix : etudiant, lafrier et root. Pour gérer une machine fille, il faut au moins un autre utilisateur. Nous appelerons cet utilisateur collegue.Si l'utilisateur collegue n'est pas encore créé, on peut le créer en passant sous root et en utilisant les commandes suivantes :
- root# useradd -m -G \ input,lp,uucp,cdrom,dialout,usb,users,wheel,audio,video,tty \ -s /bin/bash collegue root# passwd collegue
Création de l'environnement de l'utilisateur
On recopie d'abord l'environnement de référence de etudiant.- collegue@cle-edix:~ $ cp /home/lafrier/edix/reference/etudiant/env/bash_logout_etudiant ~/.bash_logout collegue@cle-edix:~ $ cp /home/lafrier/edix/reference/etudiant/env/bash_profile_etudiant ~/.bash_profile collegue@cle-edix:˜ $ cp /home/lafrier/edix/reference/etudiant/env/bashrc_etudiant ~/.bashrc collegue@cle-edix:˜ $ cp /home/lafrier/edix/reference/etudiant/env/gitconfig_etudiant ~/.gitconfig collegue@cle-edix:˜ $ cp /home/lafrier/edix/reference/etudiant/env/vimrc_etudiant ~/.vimrc collegue@cle-edix:˜ $ mkdir ~/.ssh collegue@cle-edix:˜ $ chmod 700 ~/.ssh collegue@cle-edix:˜ $ cp -r /home/lafrier/edix/reference/etudiant/env/ssh_etudiant ~/.ssh/config
- collegue@cle-edix:˜ $ vim ~/.gitconfig vim: email = <mettre votre adresse mail> name = <mettre votre prénom et votre nom>
- id_rsa_gitlab_edstaretudiant_prenom_nom id_rsa_gitlab_edstaretudiant_prenom_nom.pub id_rsa_nastar_prenom_nom id_rsa_nastar_prenom_nom.pub id_rsa_gitlab_edstar_prenom_nom id_rsa_gitlab_edstar_prenom_nom.pub
- collegue@cle-edix:˜ $ doas mount /dev/sdy1 /mnt/key
Création du répertoire edix_fille
Sur la machine clone, avant qu'elle devienne une machine fille, on trouve le répertoire- /home/lafrier/edix/edix_fille
- collegue$ rsync -av /home/lafrier/edix/edix_fille/ \ /home/collegue/edix_fille_prenom_nom
- lafrier $ /bin/rm -r /home/lafrier/edix/edix_fille lafrier $ ln -s /home/collegue/edix_fille_prenom_nom /home/lafrier/edix/edix_fille
L'utilisateur collegue devra ensuite déclarer le répertoire /home/collegue/edix_fille_prenom_nom comme un projet git et le pousser sur un dépot (par exemple le gitlab de edstaretudiant). Toutes les évolutions de la machine fille seront écrites dans ce répertoire par l'utilisateur collegue qui les archivera sur le dépot git de façon à conserver l'historique d'évolution du système. Les mises à jour resteront à la charge de lafrier, mais lorsque lafrier fera ces mises à jour cela prendra en compte ce qui aura été écrit dans /home/collegue/edix_fille_prenom_nom.
Création du répertoire edix_fille_prive
L'esprit de la gestion des machines filles est de permettre le partage. Le dépot git qui contient /home/collegue/edix_fille_prenom_nom sera donc public de sorte qu'il puisse servir d'inspiration pour d'autres gestionnaires.Mais la gestion d'une machine fille peut aussi demander l'archivage d'informations qui n'ont pas vocation à être publiques, par exemple des variables d'environnement, des clés ssh, etc. C'est le sens du répertoire edix_fille_prive. Si on rencontre ce besoin, on procède alors exactement de la même façon qui pour edix_fille et on crée un répertoire edix_fille_prive_prenom_nom sous collegue :
- collegue$ rsync -av /home/lafrier/edix/edix_fille_prive \ /home/collegue/edix_fille_prive_prenom_nom
- lafrier$ /bin/rm -r /home/lafrier/edix/edix_fille_prive lafrier$ ln -s /home/collegue/edix_fille_prive_prenom_nom \ /home/lafrier/edix/edix_fille_prive
De la même façon que pour /home/collegue/edix_fille_prenom_nom, les évolutions de la machine fille que l'utilisateur collegue écrira dans le répertoire /home/collegue/edix_fille_prive_prenom_nom seront prises en compte seulement lorsque lafrier fera les mises à jour.
EVOLUTION D'UNE MACHINE FILLE
Ajout de nouveaux paquets gentoo
Après avoir identifié le nom complet du paquet que l'on souhaite installer, par exemple net-print/cups pour l'impression, il suffit d'ajouter une ligne contenant ce nom de paquet dans le fichier- /home/collegue/edix_fille_prenom_nom/world/ajout_a_world.txt
- collegue$ echo "net-print/cups" >> \ /home/collegue/edix_fille_prenom_nom/gentoo/ajout_a_world.txt
Evolution des fichiers de configuration de portage
Dans le système, les fichiers de configuration de portage sont situés dans /etc/portage. Comme pour la liste des paquets (ci-dessus), l'utilisateur collegue ne va pas écrire ou modifier ces fichiers directement. Il va écrire des commandes shell sur /home/collegue/edix_fille_prenom_nom qui seront exécutées lorsque l'utilisateur lafrier fera la mise à jour de la partie gentoo du système. C'est en effet lafrier qui dispose de l'élévation de privilège lui permettant de modifier le système.Les fichiers de configuration concernés sont
- /etc/portage/make.conf
- /etc/portage/package.accept_keywords /etc/portage/package.license /etc/portage/package.mask /etc/portage/package.use /etc/portage/profile
Lors de la mise à jour de la partie gentoo du système, il y a une étape où lafrier commence par créer temporairement le fichier
- /tmp/make.conf
- /tmp/package.accept_keywords /tmp/package.license /tmp/package.mask /tmp/package.use /tmp/profile
Les commandes shell écrites par l'utilisateur collegue agissent sur ces fichiers et ces répertoires avant leur déploiement sur /etc/portage. Elles sont écrites dans le fichier suivant :
- /home/collegue/edix_fille_prenom_nom/gentoo/ajout_a_portage.sh
Ces commandes shell peuvent ne pas être faciles à écrire. Pour vos premiers pas dans ce mode d'administration du système (la partie qui va au delà d'edix), une façon de faire peut être de s'inspirer des shells écrits par les administrateurs des autres machines filles. Comme chaque répertoire de configuration /home/collegue/edix_fille_prenom_nom est un projet git, et comme ces projets git sont habituellement ouverts en lecture, vous pouvez les cloner et ouvrir les fichiers ajout_a_portage.sh pour regarder comment les fichiers de configuration de portage ont été travaillés sur ces machines filles, et vous en inspirer.
Nous donnons ici seulement un exemple : admettons que lors de la compilation du paquet net-print/cups nous souhaitons activer les options suivante :
-
- *
- usb (pour les imprimantes connectées avec un cable usb),
- *
- zeroconf (pour les imprimantes réseau).
- net-print/cups usb zeroconf
- echo "net-print/cups usb zeroconf" >> /tmp/package.use/cups
Les autres types d'écolution
Les répertoires edix_fille_prenom_nom et edix_fille_prive_prenom_nom reproduisent la structure du répertoire /home/lafrier/edix/reference qui contient toutes les information concernant l'état de reference du système edix sur les machines clones. L'idée est que lorsque vous modifiez les contenus de edix_fille_prenom_nom et edix_fille_prive_prenom_nom, ces modifications seront prises en compte de la même façon que sont prises en compte les informations sur l'état de référence, c'est à dire lorsque lafrier lancera les scripts de mise à jour.Attention ! au stade actuel, seuls les sous-répertoires gentoo et autre sont pris en compte. Les scripts de mise à jour n'ont pas encore été modifiés pour venir lire les informations contenues dans les sous-répertoires etudiant, lafrier, opt et root de edix_fille_prenom_nom et edix_fille_prive_prenom_nom. Scripts à écrire.
Mise à jour de edix sur une machine fille
Une fois que tout ce qui est décrit ci-dessus a été effectué complètement, la mise à jour de la machine fille n'a plus rien de particulier par rapport à celle d'une machine clone. L'utilisateur lafrier lance les scripts de mise à jour qui vont chercher dans /home/collegue/edix_fille_prenom_nom et /home/collegue/edix_fille_prive_prenom_nomles les éléments de définition du système qui sont propres à la machine fille.
VOIR AUSSI
edix(8e), edix_installation(8e), edix_mise_a_jour(8e), cle-usb-bootable-gentoo(7e), systeme(7e), unix(7e), gentoo(7e)