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
et en entrant ce qui sera le mot de passe de cet utilisateur.

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
Puis on le met à jour ces fichiers en ajustant les coordonnées de la personnes et surtout en ajoutant les clés ssh.
collegue@cle-edix:˜ $ vim ~/.gitconfig vim: email = <mettre votre adresse mail> name = <mettre votre prénom et votre nom>
Pour les clés ssh, on admet que vous disposez déjà d'un jeu de clés ssh, typiquement
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
Les mettre sur une clé usb en vous servant d'un autre ordinateur, puis monter la clé sur edix (on admet que la clé usb est vue par le noyau en tant que /dev/sdy1) :
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
Si la machine fille doit être gérée par l'utilisateur collegue, il faut recopier le contenu de ce répertoire edix_fille dans le dossier personnel de collegue. En tant que collegue :
collegue$ rsync -av /home/lafrier/edix/edix_fille/ \ /home/collegue/edix_fille_prenom_nom
Puis on efface l'ancien répertoire edix_fille pour le recréer en tant que lien vers ce nouveau répertoire. En tant que lafrier :
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
Puis en tant que lafrier :
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
avec la commande suivante :
collegue$ echo "net-print/cups" >> \ /home/collegue/edix_fille_prenom_nom/gentoo/ajout_a_world.txt
Ceci n'installera pas le paquet : il sera installé lorsque lafrier lancera la mise à jour de la partie gentoo du système.

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
et l'ensemble des fichiers situés dans les répertoires suivants :
/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
et les répertoires
/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).
Dans ce cas, si l'utilisateur collegue gérait le système directement, il lui faudrait créer un fichier nommé cups (ou le modifier) dans le répertoire /etc/portage/package.use et écrire dans ce fichier la ligne
net-print/cups usb zeroconf
Mais l'utilisateur collegue n'a pas les droits pour celà et surtout cette action doit être ici réalisée en cohérence avec la partie edix du système. Donc l'utilisateur écrit la ligne suivante dans le fichier ajout_a_portage.sh :
echo "net-print/cups usb zeroconf" >> /tmp/package.use/cups
Quand cette commande sera exécutée lors de la mise à jour du système par lafrier, elle produira bien l'écriture souhaitée.

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)