package desktop pour machines ubuntu type
Objectifs
L'objectif général est de proposer un package générique permettant d'unifier la configuration logicielle des postes clients de l'auf, tout en tenant compte des spécificités de chaque site. Et que les configurations soient strictement identiques et reproductibles d'une installation à l'autre. Le but final serait que les opérations suivantes suffisent pour installer une nouvelle machine :
- faire une installation "de base" (via netboot, pour ne même plus avoir l'étape "je monte un lecteur de cdrom dans la bécane)
- ajouter une ligne dans le sources.list
- aptitude install auf-desktop
et strictement rien de plus.
- Les objectifs secondaires sont :
N'avoir dans les paquets aucune configuration propre à un site en particulier. Les infos propres au site (clefs ssh, sudoers, par exemple) devront être prises sur le réseau, au moment de l'installation.
- Pour les postes fixes, avoir un modèle de poste "type" unique avec le maximum de paramétrages possibles via le serveur dhcp, pour avoir une machine la plus universelle possible, utilisable dans les salles de formation, pour le personnel du CNF même sur une autre branche du réseau, etc.
- Aucune donnée utilisateur ne doit être présente sur la machine elle-même : en cas de panne, on doit pouvoir échanger la machine avec une autre immédiatement, afin que l'utilisateur puisse continuer à travailler sans se préoccuper de la durée de la réparation.
Pour les portables : avoir une configuration la plus proche possible des postes fixes, en tenant compte du fait que ces machines ne seront pas toujours connectées au réseau auf (par exemple, l'authentification réseau ne sera pas possible). Idéalemement, un changement de mot de passe sur http://auth.auf devrait toutefois provoquer un changement du mot de passe local de l'utilisateur.
Toute personne travaillant à l'AuF doit pouvoir se connecter sur n'importe quel poste de n'importe quelle implantation avec son adresse prénom.nom@auf.org et son login "intranet". Premier objectif : valable en afrique de l'ouest d'ici juin 2008.
Toute personne abonné dans un CNF doit pouvoir se connecter avec son login@xx.refer.org dans n'importe quelle implantation de l'auf à condition que son abonnement soit à jour. (ouiii, je sais, déjà un peu plus dur). Valable pour l'afrique de l'ouest dès octobre 2008.
- Toute personne pouvant se connecter doit pouvoir retrouver son environnement et ses fichiers tels qu'ils sont dans son implantation d'origine (personnel AUF ou abonné d'un CNF) : objectif : heuuuu oui, je sais, ça va pas être simple. Disons 2012 ?
Présentation de la nouvelle version, à partir de Ubuntu Hardy
- (voir plus bas pour gutsy et feisty)
Découpage
- Il faut faire beaucoup plus simple que pour la version précédente : uniquement un paquet "auf-desktop" et "auf-laptop" qui recommendent un paquet "auf-applications".
Fonctionnalité de auf-desktop
- authentification réseau
- utilisateurs répartis sur plusieurs serveurs nfs, serveurs annoncés par dhcp
- ntp si annoncé sur le réseau
- hostname en fonction de l'ip
- mise à jours du système sans efforts du sysadmin
- rwhod pour suivi des durées de connexion (postes CNF)
- préconfiguration "gconf" pour que ce soit viable en home nfs ("tracker" and co)
Fonctionnalité de auf-laptop
- accés aux fichiers d'un serveur local quand connecté au réseau d'origine
- backup automatique des données quand la machine est branchée sur le réseau d'origine
- mise à jour faites par le sysadmin quand la machine est branchée sur le réseau d'origine
- openvpn quand pas sur le réseau local
Comment l'utiliser sous gutsy et feisty
sources.list à configurer avant d'installer les packages
# (vous devez remplacer les lignes ci-dessous par votre propre miroir) deb http://ubuntu.refer.sn/ubuntu/ gutsy main restricted universe multiverse deb http://ubuntu.refer.sn/ubuntu/ gutsy-updates main restricted universe multiverse deb http://ubuntu.refer.sn/ubuntu/ gutsy-security main restricted universe multiverse # paquets auf-desktop deb http://apt.sn.auf.org/ubuntu gutsy main
url de la clef pour apt.sn.auf.org : http://apt.sn.auf.org/clef-equipe-sysadmin-dakar.asc
dhcp
sur le serveur dhcp, en plus des options habituelles, ajouter ces options pour autoconfigurer les machines. Note : chaque option est facultative (optionnelle, même :-D), si l'option est absente, le service ne sera simplement pas configuré. Remplacer bien entendu les <leserveur> par la valeur appropriée.
option nfs-server code 201 = ip-address; option ntp-servers <le-serveur-ntp>; option nfs-server <le-serveur-nfs>;
auf-base-conf@configuration:racine.tar.gz
- pour certain fichiers spécifiques à l'implantation, un auf-base-conf@configuration:racine.tar.gz est telechargé via scp et desarchivé sur la machine. Il faut donc ajouter ce nom dans le domaine dns utilisé par les poste clients (le domaine spécifié par la directive "search" dans le /etc/resolv.conf de chaque machine) et créer un compte auf-base-conf sur le serveur concerné (limité à la scpisation de ce fichier). voilà la liste des fichiers que je met dedans à Dakar :
root@www-dakar:/home/auf-base-conf# tar ztf racine.tar.gz ./ ./etc/ ./etc/ssh/ ./etc/ssh/sshd_config ./etc/ssh/ssh_host_dsa_key.pub # pour éviter d'avoir des warning de chgt de clef a chaque réinstallation) ./etc/ssh/ssh_host_rsa_key.pub ./etc/ssh/ssh_host_dsa_key ./etc/ssh/ssh_host_rsa_key ./etc/sysctl.conf # pour net/ipv4/icmp_echo_ignore_broadcasts=1, afin de savoir quelles machines sont présentes sur le réseau) ./etc/sudoers # configurer avec un group %admindesktop différents des admins serveurs, suivant la taille de l'équipe ./etc/apt/ ./etc/apt/sources.list ./etc/libnss-mysql.cfg # voir la doc de GUIA ./etc/libnss-mysql-root.cfg # ./root/ ./root/.ssh/ ./root/.ssh/known_hosts ./root/.ssh/authorized_keys # pour dsh centralisé ./root/.ssh/id_dsa # pour telechargement regulier de ce fichier ./root/.ssh/id_dsa.pub # la clef publique à copier dans auf-base-conf@configuration:.ssh/authorized_keys ./root/hook # commande à executer aprés desarchivage : (ssh|nscd) restart, par exemple
ainsi, les paquets ne comportent *aucune* information locale au site de Dakar.
note : ce fichier sera ensuite retelechargé quotidiennement via cron.daily (et anacron), et desarchivé s'il a changé. il est donc important de mettre la clef dans le authorized_keys de auf-base-conf@configuration (en limitant à l'execution de scp seulement). Pour plus de sécurité : vérifier que aucun fichier n'appartient au compte auf-base-conf, et faire un compte accessible en ScponlyChroot seulement
- note : si on met un fichier /root/hook dans l'archive, ce script sera executé aprés la mise à jour, puis effacé
nfs
- seront montées automatique toutes les partitions exporté du serveur nfs dont le nom commence par "/home" (à la racine de la machine) ou celle qui contiennent le mot "/local" (sur /usr/local) - concernant le montage nfs automatique (/etc/auto.master), lorsque la question est posée, durant l'installation : "garder la version actuelle" pour conserver la configuration apportée par le paquet auf-base-conf
Liste des paquets et dépendances entre eux
Generer un joli graphe de manière totomatique ? (voir si un debjoligraphdedependance n'existe pas déjà)
Détail du contenu des paquets
(voir également les sources : http://trac.sn.auf.org/auf-desktop/browser)
auf-base
Dépendance sur les logiciels "utiles" : cf http://trac.sn.auf.org/auf-desktop/browser/auf-base/debian/control
auf-base-conf
pour les confs de base des softs à installer :
quoi |
statut |
acceptation auto de la licence java |
pas ok |
réponse auto pour plugin flash |
pas ok |
auf-auth-mysql
- les fichiers de configuration /etc/libnss-mysql.cfg /etc/libnss-mysql-root.cfg ne sont pas gérés/créé/modifiés par ce package : configuration locale au site (serveur, pass, etc). voir la doc de guia pour une doc sur ce qu'il faut mettre dedans, et les ajouter au .tgz de configuration des postes.
dpkg-statoverride --update --add root shadow 6555 /sbin/unix_chkpwd dans le postinst (soucis dans la gestion du groupe shadow avec libnss-mysql-bg)
auth-dhcp-conf
- dhclient.conf
- hooks
nom |
statut |
ntp |
ok |
nis |
ok |
nfs |
en cours |
problèmes et questions restant à résoudre
- tester ! (surtout purge/remove/upgrade)
- licence java/choix flashplugin : comment automatiser
- ajouter doc, readme, licence, etc
- pas fiable/stable si le scp échoue lors de la copie du .tgz d'autoconf
Action suivante
- ajouter une signature/clef (regarder comment ça marche vraiment)
- automatiser d'une façon ou d'une autre la gestion des clefs, pour les sources non ubuntu
- auf-dhcp-conf : remplacer le nfs-server par un nfs-serverS. Ne plus toucher au /home, mais partir du principe que les homedir seront directement en /nfs/home-xxx
- désactiver la désactivation ipv6. ou en faire un choix debconf
- remettre de l'ordre et de la cohérence dans les (post|pre)inst et (post|pre)rm
- auf-laptop-conf : accès aux ressources réseau locales, lorsque le laptop est sur son réseau "de base"
- test edgy
- faire un auf-foad d'accompagnement
Contributions
Modèle d'un poste client à Cotonou : ZAO/Cotonou/Modèles/PosteFOAD
Proposition d'ajout dans le postinst pour une config Gnome un peu plus simple (surtout retirer le menu "changer d'utilisateur" et autres trucs pas évident à gérer sur des machines publiques) -- ThomasNoël :
function mygconf() { echo gconf/defaults : "$@" /usr/bin/gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults "$@" > /dev/null } # sur le menu de déconnexion : # on supprime le bouton "changer d'utilisateur" : mygconf --type boolean --set /desktop/gnome/lockdown/disable_user_switching true # on supprime le vérouillage d'écran (à faire uniquement sur postes publics ?) : mygconf --type boolean --set /desktop/gnome/lockdown/disable_lock_screen true # ni hibernation, ni suspension : mygconf --type boolean --set /apps/gnome-power-manager/can_hibernate false mygconf --type boolean --set /apps/gnome-power-manager/can_suspend false # des icônes sur le bureau ("mes documents" et la corbeille) mygconf --type boolean --set /apps/nautilus/desktop/home_icon_visible true mygconf --type boolean --set /apps/nautilus/desktop/trash_icon_visible true mygconf --type string --set /apps/nautilus/preferences/default_folder_viewer "list_view" # optimisations (enfin... c'est un grand mot...) mygconf --type boolean --set /desktop/gnome/thumbnailers/disable_all true mygconf --type boolean --set /desktop/gnome/sound/event_sounds false mygconf --type string --set /desktop/gnome/background/picture_filename "" mygconf --type string --set /desktop/gnome/background/color_shading_type "solid" mygconf --type string --set /desktop/gnome/background/primary_color "#000000" # utilisation de metacity par défaut (et pas compiz qui est apparement le défaut sur gutsy) # (attention : je n'ai pas testé...) mygconf --type string --set /desktop/gnome/applications/window_manager "/usr/bin/metacity" # affichage correct des polices sur écran LCD (pas testé non plus...) mygconf --type string --set /desktop/gnome/font_rendering/antialiasing "rgba" mygconf --type string --set /desktop/gnome/font_rendering/hinting "full"
à partir de hardy, pour éviter que update-manager ne propose une mise à jour totale de la distribution : indiquer Prompt=never dans /etc/update-manager/release-upgrades.
pour gutsy : pour ne pas démarrer la deskbar et le fast-user-switch (gourmands en ressources) et ne pas afficher les icones par défaut vers Evolution ou l'aide (non adaptés), il faudrait remplacer le fichier /usr/share/gconf/defaults/05_panel-default-setup.entries par celui-ci 05_panel-default-setup.entries, puis faire un update-gconf-defaults. Note : remplacer le fichier avec un divert car il appartient à gnome-panel-data. -- Thomas
Cette méthode touche aux fichiers Debian, ce qu'il ne faut généralement pas faire. N'y a-t'il pas une méthode plus « locale », par exemple dans /etc/gconf/ ? -- ProgFou, qui n'a pas le temps de tester cette semaine mais regardera la semaine prochaine si personne ne répond d'ici là.
- beeeh... c'est pas debian, hein, là. on est en pleine jungle, dans un univers où il faut bricoler pour avoir un paquet flash plugin qui marche et un pam_exec qui sait lire. Pas de prisonniers. -- J.
Ok, ok... Je demandais juste comme ça, là, entre deux prises de têtes avec un gnash qui fait monter la charge autour de 10 et un freshclam qui charge pas les updates pour clamtk... -- ProgFou
- Plus sérieusement (oh oui alors), on peut ajouter des choses dans l'arbre gconf via des trucs locaux "non debian/ubuntu", mais on ne peut pas en retirer (ou j'ai pas trouvé comment). Donc il faut supprimer certaines entrées dans 05_panel-default-setup.entries. C'est la seule solution que j'ai trouvée. Ceci dit, avec un "divert" ça reste correct. Je pense que ce fichier ne sera pas modifié par Ubuntu dans une version donnée. Donc c'est pas très très clean mais c'est calculé et assumé... -- Thomas