Journal RemoteScript : interface web pour exécuter des scripts sur des machines linux distantes

Posté par . Licence CC by-sa
Tags :
11
27
oct.
2011

Si comme moi vous avez eu besoin de gérer un parc de clients Linux, vous vous êtes sûrement demandés comment exécuter la même commande ou le même script sur plusieurs machines en quelques clics ou en quelques commandes.

C'est pourquoi j'ai commencé le développement d'une application web (php/mysql) s'appuyant sur la librairie libssh2 pour php. Cet outil s'adresse aux administrateurs de parc clients et/ou serveurs linux.

Cette interface permet d'exécuter des scripts à distance sur une ou plusieurs machines simultanément, en utilisant le protocole SSH. Le résultat des commandes envoyées aux serveurs SSH distants est affiché et conservé dans la base de données pour archivage ou consultation ultérieure.

L'utilisation de ce logiciel ne nécessite pas d'installation sur les machines distantes, à par le traditionnel serveur SSH.

L'interface vous permet de :

  • créer des machines
  • réunir les machines en groupes
  • créer des scripts
  • exécuter des scripts sur des machines
  • exécuter des scripts sur les groupes de machines
  • afficher le résultat par machine et par groupes de machines

À l'origine du projet, je n'ai pas trouvé d'outil capable de réaliser cette tâche.
Les essais, avis et contributions sont les bienvenus, si comme moi, vous avez eu (par exemple) à faire rapidement un "df -h" sur plus de 40 clients linux.

http://remotescript.sourceforge.net/

  • # ClusterSSH

    Posté par (page perso) . Évalué à 5.

    Je ne m'y connait pas trop en administration, mais ce n'est pas ce que fait clusterssh ?

    • [^] # Re: ClusterSSH

      Posté par . Évalué à 4.

      Cssh me semble un très bon outil. Quand j'ai commencé ce projet, je n'ai pas mis la main dessus malgré mes recherches.
      RemoteScript se différencie cependant par quelques subtilités, comme l'interface web et l'archivage du résultat des commandes passées dans la bdd.

    • [^] # ClusterShell

      Posté par . Évalué à 1.

      Je rajouterai également ClusterShell (différent de ClusterSsh)

      Il apporte des fonctionnalités d'aggregation de résultats, API Python, gestion de groupes et d'autres features sympas.

  • # C3

    Posté par . Évalué à 1.

    Je n'ai pas vu en détail ton projet, mais le projet C3 permet de faire ce genre de chose en ligne de commande :
    http://www.csm.ornl.gov/torc/C3/

  • # Fabric?

    Posté par . Évalué à 6.

    Pardon de ne pas (encore) l'utiliser, mais fabric (GitHub) ne répond-il pas au cahier des charges? Interface en ligne de commande, création de tâches, création de groupes de machines par rôles, affichage des résultats, etc.?

  • # Puppet

    Posté par (page perso) . Évalué à 4.

    Franchement, je pense que pour faire de l'admin de parc, y'a pas mieux...

    Je connais même un gars qui a tellement poussé l'outil dans ses retranchement qu'il fait la doc de ses serveurs via puppet. Il doit me montrer comment il s'y prend parce que moi, ca reste encore un poil bordélique.

    • [^] # Re: Puppet

      Posté par (page perso) . Évalué à 10.

      Il doit me montrer comment il s'y prend parce que moi, ca reste encore un poil bordélique.

      Il est le Master of puppet?

    • [^] # Re: Puppet

      Posté par (page perso) . Évalué à 2.

      Franchement, je pense que pour faire de l'admin de parc, y'a pas mieux...

      Si, CFEngine.

      Pour les sceptiques, voici un PDF montrant que Puppet est beaucoup plus lent et consommateur de ressources que CFEngine.

      Pour les curieux, voici un peu de doc pour découvrir CFEngine.

      Voilà, j'espère que tout le monde est convaincu. Si non, pas la peine d'attendre demain pour argumenter.
      ;-)

    • [^] # Re: Puppet

      Posté par . Évalué à 1.

      Cool, on va pouvoir lancer un troll puppet/chef.
      :-)

      If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.

      • [^] # Re: Puppet

        Posté par (page perso) . Évalué à 2.

        Puppet est certes lent et demande beaucoup de ressources mais niveau fonctionnalités il n'y a pas photo. C'est le jour et la nuit comparé à cfengine (et pour les trolles j'ai essayé les deux sûr un parque de serveurs en prod).
        Bien entendu nous sommes vendredi !

        Si tu ne sais pas demande, si tu sais partage !

  • # Capistrano

    Posté par . Évalué à 4.

    Capistrano devrait correspondre aussi.

  • # Gestion des clefs ssh ?

    Posté par . Évalué à 3.

    Bonjour,
    je vois que tu chiffres les passwords des couples machines/utilisateurs dans ta base avec une clef aes. Qu'en est-il de l'authentification par clef et de leur gestion ?
    Je n'ai pas vu/trouvé d'informations en ce sens.

    • [^] # Re: Gestion des clefs ssh ?

      Posté par . Évalué à 2.

      Effectivement très bonne question. Je n'ai implémenté de fonctionnalité pour gérer les clés ssh. Il faut que je creuse la doc de libssh2. Et à ajouter la TODO list...

  • # Rundeck

    Posté par (page perso) . Évalué à 1.

    Il y a rundeck, qui dispose aussi d'une interface web:

    http://rundeck.org/

    • [^] # Re: Rundeck

      Posté par . Évalué à 2.

      Les vidéos sonnent bien. Ce projet à l'air béton. Il semble prendre en charge la fonctionnalité de tâches, pour être exécutées une fois la machine "Up". Très bon !

  • # Ça existe

    Posté par (page perso) . Évalué à 4.

    Puppet (cf puppetlab) fait ça très bien (après il faut savoir s'en servir mais c'est un autre débat). Lancer des commandes, faire des crons, tout ça doit être standardisé et automatisé sur toutes les machines. Lancer une commande sur des machines de prods ne doit pas demander un admin à chaque fois, juste une méthode qui permet de le faire plus tard tout seul comme un grand...
    Un bon admin est un admin fainéant !

    Sur ce je retourne jouer de la flûte dans la salle machine...

    Si tu ne sais pas demande, si tu sais partage !

    • [^] # Re: Ça existe

      Posté par . Évalué à 2.

      Espèce de malade tu va pourrir les perfs disques de tes machines !

  • # Dish ?

    Posté par . Évalué à 2.

    En plus de "Cluster SSH" que j'utilise en interactif, j'apprécie grandement DISH.
    Pour générer des rapports d'audit ou changer des mots de passe c'est idéal.
    http://nic-nac-project.org/~drimiks/gnu/dish.shtml

  • # NIH

    Posté par (page perso) . Évalué à 1.

    Il me semble qu'il y a déjà un programme qui existe et qui fait plus ou moins ce que tu veux mais je n'arrive pas à retomber sur son nom.

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

  • # GXP

    Posté par (page perso) . Évalué à 2.

  • # Merci

    Posté par . Évalué à 3.

    Pour tous les outils présentés.
    Si j'étais tombé dessus il y a 2 ans, je n'aurais peut-être pas commencé ce projet... !
    Je rajoute quand même le mien à la longue liste des outils du genre.
    Chapeau à la communauté hyper réactive !

  • # pssh ?

    Posté par . Évalué à 0.

  • # Autre outil ... ?

    Posté par . Évalué à 0. Dernière modification le 16/01/12 à 17:23.

    Il en existe pas un qui:
    - Ne nécessite pas l'installation d'un client local (trop lourd à gérer quand on a plein d'UNIX/architectures préhistoriques où on ne dispose pas forcément de python/perl/ruby/... ). En gros juste SSH (et un shell plus ou moins standard bien sûr) est dispo sur chaque nœud.
    - Gère la reprise sur erreur: lancer des commandes c'est bien, mais qu'elles soient lancées dès que la machine revient en ligne, c'est mieux ! (j'ai pas trouvé la fonction dans Rundeck, qui d'ailleurs parait assez limité après quelques heures de test).
    A chaque fois on a soit une fonction, soit l'autre, mais jamais ces deux critères réunis, je me trompe ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.