• [^] # Re: comparaison

    Posté par . En réponse à la dépêche Sortie de massadmin version 2.3. Évalué à 3.

    Ton exemple est intéressant, voici ce que je peux te proposer si tu utilises ClusterShell. Ne connaissant pas ton cas en détail, je vais faire qlq suppositions. A corriger en fonction de tes besoins donc.

    En shell, avec les outils de ligne de commandes:

    #!/bin/bash

    BINFILE="/my/bin/file"
    # Il est tres pratique que le gestionnaire de groupe de ClusterShell soit configuré.
    # Dans ce cas, il suffit de donner les noms des groups en question et la liste des
    # machines correspondantes sera utilisé.
    PRIMARYGROUP="@primary"
    BACKUPGROUP="@backup"
    # Si ce n'est pas le cas, il suffit de remplacer par la liste des machines correspondantes

    echo "Copying new version of $BINFILE..."
    clush -S -w $PRIMARYGROUP,$BACKUPGROUP -c $BINFILE || exit 1
    echo "Restarting primary service..."
    clush -S -w $PRIMARYGROUP "service primary restart" || exit 1
    echo "Restarting backup service..."
    clush -S -w $BACKUPGROUP "service primary restart" || exit 1
    exit 0


    En python, en utilisant la bibliothèque,
    #!env python

    import sys
    from ClusterShell.Task import task_self()

    BINFILE = "/my/bin/file"
    PRIMARYGROUP = "@primary"
    BACKUPGROUP = "@backup"

    task = task_self()

    # On prepare la copie
    task.copy(BINFILE, BINFILE, "%s,%s" % (PRIMARYGROUP, BACKUPGROUP))
    # On lance la copie parallele
    task.resume()

    # Si tout c'est bien passé, on continue
    if task.max_retcode() > 0:
    print >>sys.stderr, "Copy failed\n"
    sys.exit(1)

    # On prepare l'exécution des 2 commandes en même temps)
    task.shell("service primary restart", PRIMARYGROUP)
    task.shell("service backup restart", BACKUPGROUP)
    # On redémarre tout en même temps
    task.resume()

    # Si tout c'est bien passé, on continue
    if task.max_retcode() > 0:
    print >>sys.stderr, "Restart failed\n"
    sys.exit(1)

    sys.exit(0)


    ClusterShell est souple, donc il y a différentes façons de faire les choses selon les besoins. On peut travailler plus en détail l'output, l'analyse des résultats. On peut imaginer redémarrer les serveurs que sur les machines qui ont réussit la copie, cela de façon très simple. Ce n'est que quelques exemples. N'hésitez pas à poser des questions si vous voulez en savoir plus.