Si vous êtes un administrateur système Linux, il y a de fortes chances que vous ayez plus d’une machine dont vous êtes responsable quotidiennement. Vous pouvez même avoir une banque de machines que vous gérez qui sont similaires — une batterie de serveurs Web, par exemple. Si vous avez besoin de taper la même commande sur plusieurs machines à la fois, vous pouvez vous connecter à chacune avec SSH et le faire en série, ou vous pouvez vous économiser beaucoup de temps et d’efforts et utiliser un outil comme ClusterSSH.
ClusterSSH est un wrapper Tk/Perl autour d’outils Linux standard tels que XTerm et SSH. En tant que tel, il fonctionnera sur à peu près tous les systèmes d’exploitation compatibles POSIX où les bibliothèques existent – je l’ai exécuté sur Linux, Solaris et Mac OS X. Il nécessite les bibliothèques Perl Tk (perl-tk
sur Debian ou Ubuntu) et le protocole X11:: (libx11-protocol-perl
sur Debian ou Ubuntu), en plus de xterm et OpenSSH.
Installation
L’installation de ClusterSSH sur un système Debian ou Ubuntu est triviale — un simple sudo apt-get install clusterssh
l’installera ainsi que ses dépendances. Il est également emballé pour une utilisation avec Fedora, et il est installable via le système de ports sur FreeBSD. Il existe également une version MacPorts à utiliser avec Mac OS X, si vous utilisez une machine Apple. Bien sûr, il peut également être compilé à partir de la source.
Configuration
ClusterSSH peut être configuré soit via son fichier de configuration global — /etc/clusters
, soit via un fichier dans le répertoire personnel de l’utilisateur appelé .csshrc
. J’ai tendance à privilégier la configuration au niveau de l’utilisateur car cela permet à plusieurs personnes sur le même système de configurer leur client ClusterSSH comme elles le souhaitent. La configuration est simple dans les deux cas, car le format de fichier est le même. ClusterSSH définit un « cluster » comme un groupe de machines que vous souhaitez contrôler via une seule interface. Dans cet esprit, vous énumérez vos clusters en haut du fichier dans un bloc « clusters », puis vous décrivez chaque cluster dans une section distincte ci-dessous.
Par exemple, disons que j’ai deux clusters, chacun composé de deux machines. « Cluster1 » contient les machines « Test1 » et « Test2 », et « Cluster2 » contient les machines « Test3 » et « Test4 ». Le fichier de contrôle ~.csshrc
(ou /etc/clusters
) ressemblerait à ceci:
clusters = cluster1 cluster2
cluster1 = test1 test2
cluster2 = test3 test4
Vous pouvez également créer des méta-clusters — des clusters qui font référence à des clusters. Si vous vouliez créer un cluster appelé « all » qui englobe toutes les machines, vous pouvez le définir de deux manières. Tout d’abord, vous pouvez simplement créer un cluster contenant toutes les machines, comme suit:
clusters = cluster1 cluster2 all
cluster1 = test1 test2
cluster2 = test3 test4
all = test1 test2 test3 test4
Cependant, ma méthode préférée est d’utiliser un méta-cluster qui englobe les autres clusters:
clusters = cluster1 cluster2 all
cluster1 = test1 test2
cluster2 = test3 test4
all= cluster1 cluster2
En appelant le cluster « tout » comme contenant cluster1 et cluster2, si l’un de ces clusters change, le changement est automatiquement capturé afin que vous n’ayez pas à mettre à jour la définition « tout ». Cela vous fera gagner du temps et des maux de tête si votre.le fichier csshrc ne cesse de croître en taille.
Utiliser ClusterSSH
Utiliser ClusterSSH est similaire au lancement de SSH par lui-même. Le simple fait d’exécuter cssh -l <username> <clustername>
lancera ClusterSSH et vous connectera en tant qu’utilisateur souhaité sur ce cluster. Dans la figure ci-dessous, vous pouvez voir que je me suis connecté à « cluster1 » en tant que moi-même. La petite fenêtre intitulée « CSSH » est la fenêtre de la console SSH du cluster. Tout ce que je tape dans cette petite fenêtre est répercuté sur toutes les machines du cluster — dans ce cas, les machines « test1 » et « test2 ». Dans un pincement, vous pouvez également vous connecter à des machines qui ne sont pas dans votre.fichier csshrc, simplement en exécutant cssh -l <username> <machinename1> <machinename2> <machinename3>
.
Si je veux envoyer quelque chose à l’un des terminaux, je peux simplement changer de focus en cliquant sur le XTerm souhaité, et tapez simplement cette fenêtre comme je le ferais habituellement. ClusterSSH a quelques éléments de menu qui aident vraiment lorsqu’il s’agit d’un mélange de machines. Selon la figure ci-dessous, dans le menu « Hôtes » de la console ClusterSSH, plusieurs options sont utiles.
« Retile Windows » fait exactement cela si vous avez redimensionné ou déplacé manuellement quelque chose. « Ajouter hôte (s) ou cluster (s) » est idéal si vous souhaitez ajouter un autre ensemble de machines ou un autre cluster à la session ClusterSSH en cours d’exécution. Enfin, vous verrez chaque hôte répertorié en bas du menu « Hôtes ». En cochant ou en décochant les cases à côté de chaque nom d’hôte, vous pouvez sélectionner les hôtes vers lesquels la console ClusterSSH fera écho aux commandes. C’est pratique si vous souhaitez exclure un hôte ou deux pour une raison unique ou particulière. L’option de menu finale qui est agréable à avoir se trouve sous le menu « Envoyer », appelé « Nom d’hôte ». Cela fait simplement écho au nom d’hôte de chaque machine à la ligne de commande, ce qui peut être pratique si vous construisez quelque chose spécifique à l’hôte dans votre cluster.
Mises en garde avec ClusterSSH
Comme de nombreux outils UNIX, ClusterSSH a le potentiel de mal tourner si vous n’êtes pas très prudent avec son utilisation. J’ai vu des erreurs de ClusterSSH éliminer tout un niveau de serveurs Web simplement en propageant une faute de frappe dans une configuration Apache. Avoir accès à plusieurs machines à la fois, éventuellement en tant qu’utilisateur privilégié, signifie que les erreurs coûtent cher. Faites attention et revérifiez ce que vous faites avant de frapper cette touche Entrée.
Conclusion
ClusterSSH ne remplace pas un système de gestion de configuration ou l’une des autres bonnes pratiques lors de la gestion d’un certain nombre de machines. Cependant, si vous devez faire quelque chose en dehors de votre ensemble d’outils ou de votre processus habituel, ou si vous effectuez un travail de prototype, ClusterSSH est indispensable. Il peut gagner beaucoup de temps lorsque vous effectuez des tâches qui doivent être effectuées sur plusieurs machines, mais comme tout outil électrique, il peut causer beaucoup de dégâts s’il est utilisé au hasard.