在本地运行Fabric脚本

ale*_*rsh 41 django fabric

我有一个django应用程序,我写了一个结构脚本,在部署服务器(Cent OS 5)上安装我的应用程序.

现在我想在部署服务器上本地运行相同的结构脚本.

有没有办法在不提供ssh用户和密码的情况下执行此操作?

我的意思是只用"-H localhost"?

谢谢,Alex A.

Var*_*tta 78

是的,您可以使用local而不是run方法在本地运行fab .我所做的通常是设置环境的方法,并在调用实际任务之前先调用这些方法.让我用一个例子来说明你的具体问题

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')
Run Code Online (Sandbox Code Playgroud)

根据环境,您可以执行以下操作

在localhost上安装:

    fab localhost install
Run Code Online (Sandbox Code Playgroud)

在远程机器上安装:

    fab remote install
Run Code Online (Sandbox Code Playgroud)


xuh*_*hcc 7

我正在使用另一个技巧在本地执行远程任务:

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")
Run Code Online (Sandbox Code Playgroud)