5 points par xguru 2025-04-22 | 2 commentaires | Partager sur WhatsApp
  • 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
    • Exemple de benchmark (sur un LAN Gigabit) :
      $ time pussh -f servers -r 100 date  
      Total: 201 host(s), 4 second(s)  
      
      real    0m4.069s  
      user    0m7.132s  
      sys     0m3.140s  
      

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

 
ahwjdekf 2025-04-24

Le nom est ambigu !

 
nemorize 2025-04-25

Je ne pourrais pas être plus d'accord 🤣