fab-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fab-user] Serial to parallel execution


From: Hajducko, Steven
Subject: [Fab-user] Serial to parallel execution
Date: Wed, 16 Nov 2011 17:36:46 -0800

I think I’ve got this working, but I just want to confirm I’m doing this correctly or if there’s a better way to do this.

 

Basic premise is, want to be able to compile ( once ), then parallel the push/install.  Also want to use roles to be able to selectively decide which environment to push to at runtime.

 

Also, is there a better way to test directory existence that I’m missing?

 

Would be run with something like:

 

fab deploy:1.73 –roles prd

 

from __future__ import with_statement

from fabric.api import *

from fabric.contrib.console import confirm

 

env.roledefs = {

    'prd' : ['host1','host2'],

    'qa'   : ['qahost1','qahost2'],

    'dev'   : ['devhost1']

}

 

def _package():

    # eventually will be a compile, but testing with tar.

    local("tar -cvf %s.tar %s" % (env.tarball, env.codedir))

   

@parallel

def _push():

    # smarter way to test directory existence?

    with settings(warn_only=True):

        result = run("ls /opt/ldad/proserv")

    if result.failed and not confirm("Directory does not exist. Continue?"):

        abort("Aborting at user request")

    put(env.tarball, "/opt/ldad/proserv")

 

@task

@runs_once

def deploy(ver):

   env.pkgver = ver

    env.workdir = "/Users/steve/work/ldadscript"

    env.codedir = "%s/LdadIntegration-%s" % (env.workdir, env.pkgver)

    env.tarball = "%s.tar" % (env.codedir)

    _package()

    execute(_push)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]