41 votes

exécution d'un script de structure localement

J'ai une application Django et j'ai écrit un script Fabric qui installe mon application sur le serveur de déploiement (Cent OS 5).

Maintenant, je veux exécuter le même script de structure localement sur le serveur de déploiement.

Existe-t-il un moyen de le faire sans fournir d'utilisateur et de mot de passe ssh?

Je veux dire juste avec "-H localhost"?

Merci, Alex A.

79voto

Varun Katta Points 1036

Oui, vous pouvez exécuter fab localement par l'aide de la méthode locale au lieu de l'exécuter. Ce que je fais généralement est de disposer de méthodes pour la configuration de l'environnement, et d'appeler ces méthodes d'abord, avant d'appeler la tâche réelle. Permettez-moi d'illustrer cela avec un exemple pour vos questions spécifiques

fabfile.py

    from fabric.operations import local as lrun, run
    from fabric.api import task
    from fabric.state import env

    @task
    def localhost():
        env.run = lrun
        env.hosts = ['localhost']

    @task
    def remote():
        env.run = run
        env.hosts = ['some.remote.host']

    @task
    def install():
        env.run('deploymentcmd')

Et en fonction de l'environnement, vous pouvez effectuer les opérations suivantes

Installer sur localhost:

    fab localhost install

Installer sur la machine distante:

    fab remote install

7voto

xuhcc Points 71

J'utilise une autre astuce pour exécuter la tâche à distance localement:

 from fabric.api import run, sudo, local
from contextlib import contextmanager

@contextmanager
def locally():
    global run
    global sudo
    global local
    _run, _sudo = run, sudo
    run = sudo = local
    yield
    run, sudo = _run, _sudo

def local_task():
    with locally():
        run("ls -la")
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X