Comment utiliser urpmi –parallel

Ce HOWTO aura pour but de vous montrer comment utiliser la fonction d’installation parallèle d’urpmi.
Nous allons configurer urpmi afin qu?il mette à jour des postes clients depuis un serveur. Les postes clients ont pour nom DNS client1 et client2. Nous allons utiliser SSH pour faire la mise à jour

Configuration des clients

Sur les clients il convient juste de s?assurer qu?un serveur SSH est installé et qu?il autorise les connexions ( notamment de l?utilisateur root ).

Configuration et installation du serveur SSH

urpmi openssh-server

On édite le fichier de configuration du serveur SSH /etc/ssh/sshd_config et on le configure afin qu?il autorise les connexion de l?utilisateur root ( PermitRootLogin yes ) car par défaut ceci est désactivé :

# $OpenBSD: sshd_config,v 1.70 2004/12/23 23:11:00 djm Exp $

# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.

#Port 22
#Protocol 2,1
Protocol 2
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

# HostKey for protocol version 1
HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

PermitRootLogin yes

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don’t trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don’t read the user’s ~/.rhosts and ~/.shosts file
s #IgnoreRhosts yes

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes

X11Forwarding yes

UsePrivilegeSeparation yes

#Compression yes

# override default of no subsystems
Subsystem sftp /usr/lib/ssh/sftp-server

On relance le service sshd afin que les modifications soient prises en compte :

service sshd restart

il conseillé de tester que l?on peut se connecter sur le serveur depuis l?ordinateur lui-même ou depuis un autre en tapant par exemple la commande suivante dans le cas du poste client1 :

ssh root@assistante2

Configuration des médias sur les clients

Pour ajouter les média sur les postes clients, on peut s?aider du site http://easyurpmi.zarb.org pour configurer les médias. Le Gestionnaire de média de rpmdrake peut aussi le faire de manière automatique. Par exemple pour ajouter de manière automatique les média main, contrib pour une Mandriva 2006 ( le nom des média sera préfixé par 2006_ ) :

urpmi.addmedia --distrib 2006_ ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/2006.0/i586

Ensuite on ajoute le média pour les mises à jours de sécurité, normalement on peut le faire de manière graphique et automatique lors du 1er lancement de MandrakeUpdate :

urpmi.addmedia --update 2006_update_secu ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/updates/2006.0/RPMS/ with media_info/hdlist.cz

Si tous se passe bien alors on peut passer à la configuration du serveur.

 

Configuration du serveur

Configuration d’urpmi sur le serveur

Le serveur sera celui qui aura les média pour urpmi configuré et qui enverra les commandes aux postes clients.

  1. Tout d’abord on procède à l’installation du paquetage urpmi-parallel-ssh :
    urpmi urpmi-parallel-ssh
    
  2. On édite le fichier /etc/urpmi/parallel.cfg dans lequel on va définir une ligne du type : nom_du_groupe:protocole_utilisé:client1:client2
    Dans notre cas, nous voulons créer le groupe clients_grp qui regroupera les ordinateurs clients. On utilisera le protocole SSH pour communiquer avec eux. Les postes clients se nomment ( noms DNS ) : client1 et client2. Cela nous donne la ligne suivante :

    clients_grp:ssh:client1:client2
    
  3. on configure les médias sur le serveur, on peut s?aider du site http://easyurpmi.zarb.org pour configurer les médias. Le Gestionnaire de média de rpmdrake peut aussi le faire de manière automatique. Par exemple pour ajouter de manière automatique les média main, contrib pour une Mandriva 2006 ( le nom des média sera préfixé par 2006_ ) :
    urpmi.addmedia --distrib 2006_ ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/2006.0/i586
    

    Ensuite on ajoute le média pour les mises à jours de sécurité, normalement on peut le faire de manière graphique et automatique lors du 1er lancement de MandrakeUpdate :

    urpmi.addmedia --update 2006_update_secu ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/updates/2006.0/RPMS/ with media_info/hdlist.cz
    

    Installation et Configuration du client SSH

    On installe le client SSH :

    urpmi openssh-client
    

    On génère la paire de clés privés/publiques SSH pour l?utilisateur root avec la commande ssh-keygen. On utilisera l’encryptage DSA et al clé sera stocké dans /root/.ssh/id_dsa :

    ssh-keygen -t dsa
    

    On copie la clé publique sur les postes clients client1 et client2 :

    ssh-copy-id -i ~/.ssh/id_dsa.pub root@client1
    ssh-copy-id -i ~/.ssh/id_dsa.pub root@client2
    

    Si tout s?est bien déroulée, on devrait pouvoir se connecter sur les postes client1 et client2 en tant que root sans fournir de mot de passe en utilisant par exemple la commande suivante à partir du serveur :

    ssh root@assistante2
    

    Note : On peut envisager de désactiver l?utilisation des mots de passes pour la connexion via SSH, pour cela il suffit de mettre PasswordAuthentication no dans le fichier /etc/ssh/sshd_config des postes clients ( client1 et client2 ).

    Bien que la commande urpmi soit parallélisée, la commande « urpmi.update » qui permet de mettre à jour les média ne l?est pas. Cela pourrait poser problème car les médias des clients et du serveur ne seraient plus synchrones. C?est pourquoi on va faire appel à un programme tierce qui permettra de lancer la mise à jour des média sur les différents postes en même temps. Se programme se basera aussi sur SSH pour fonctionner. Ce programme se nomme fanout et se trouve dans les média contrib. Pour l?installer il suffit de procéder comme suit :

    urpmi fanout
    

    Ensuite on lance la mise à jour des médias sur le serveur ( localhost ) et les 2 postes clients :

    fanout "localhost client1 client2" "urpmi.update -a"
    

    Si cela marche alors on peut faire un essai en lançant une mise à jour sur les postes clients avec urpmi –parallel, il suffit de préciser à la commande le groupe que l?on veut mettre à jour et ensuite de spécifier le paquetage que l?on veut installer. Pour faire une mise à jour de OpenOffice, on fera :

    urpmi --parallel  clients_grp openoffice.org
    

    Pour faire une mise à jour globale des systèmes, on fera :

    urpmi --parallel  clients_grp ?auto-select --auto --keep
    
    En éspérant vous avoir aidé !