- Outil CLI permettant d’exécuter simultanément des commandes sur plusieurs serveurs via des sessions SSH parallèles
- Prend en charge aussi bien un usage simple que des contrôles avancés des entrées/sorties, ce qui le rend utile pour l’administration de clusters de serveurs
Fonctionnalités de base
- Exécute des commandes sur plusieurs hôtes et affiche le nom de l’hôte en préfixe
- Exemple :
pussh -h host1,host2 uname -a
- La liste des hôtes peut être fournie depuis un fichier ou l’entrée standard
- Exemple :
pussh -f servers uname -a ou fetch-servers | pussh -f - uname -a
- La sortie peut être envoyée dans un pipeline afin d’être triée ou filtrée
- Exemple : tri par utilisation disque →
pussh -f servers df -h / | grep /dev | sort -rn -k5
- La sortie de chaque hôte peut être enregistrée dans un fichier séparé (
%h représente le nom de l’hôte)
- Exemple :
pussh -f servers -o %h-hw.txt lshw
- Le résultat de sortie SSH peut être traité par pipeline vers une autre commande
- Exemple :
pussh -f servers -o '|grep feature' command > output
Contrôle des entrées
- Lors de l’exécution d’une commande, l’entrée peut être fournie depuis un fichier ou la sortie d’une commande
- Exemple :
pussh -f servers -i file command
- Exemple : fichier d’entrée par hôte →
pussh -f servers -i %h.data command
- Exemple : entrée dynamique →
pussh -f servers -i 'get-data %h|' command
-i et -o peuvent être combinés librement
Déploiement et exécution
- Une commande ou un script peut être transmis à distance puis exécuté
- Exemple :
pussh -f servers -u my-deploy.sh args ...
- Toutefois, l’exécutable doit être au format self-contained ou compatible avec l’environnement du serveur cible
Conseils d’optimisation des performances
- La vitesse d’établissement des connexions SSH a une forte influence sur le temps total d’exécution
- Si la limite de vitesse de traitement de l’agent SSH est dépassée, des échecs d’authentification ou des erreurs de connexion peuvent survenir
- Recommandation : définir un taux d’exécution (rate) à l’usage (ex. :
alias pussh='pussh -r 50')
- La latence réseau a un impact important ; il est donc plus rapide de se connecter en SSH à une machine du LAN distant puis d’y exécuter pussh
Développement et historique
- Outil utilisé en interne chez Bearstech depuis 2008
- À l’origine, il ne s’agissait que de quelques lignes de script shell ; il fonctionne désormais de manière fiable même sur des clusters de plus de 500 serveurs
- Il est intégré à des systèmes de gestion cloud pour générer une liste d’hôtes exécutables à partir d’une simple description des hôtes
Limitations
- Sur les serveurs distants, stdout et stderr ne sont pas distingués et sont fusionnés dans un seul flux
- Il est impossible de récupérer l’état de sortie (
exit status) de la commande exécutée sur le serveur distant
2 commentaires
Le nom est ambigu !
Je ne pourrais pas être plus d'accord 🤣