Skip to main content

capistrano like deploy recipe for fabric

Project description

# fabric_deploy

## Overview

Capistrano like deploy recipe for Fabric.


## Requirements

* Fabric


## Usage

This recipe is just a template for basic deploy procedures.
You may need to override your own tasks in your fabfile.py.

Initialize directory structure for "development" stage.

% fab development deploy.setup

Deploy application to "development" stage.

% fab development deploy

Rollback to previously deployed application.

% fab development deploy.rollback

Clean up old applications.

% fab development deploy.cleanup


## Privilege configurations

This recipe assumes that you can ssh by user named "deploy" and "app" by default.

* deploy (user)
** Used for application deployment.
** Belongs same group as app.
** sudo(8) should be granted without password.
* app (runner)
** Used for running applications
** Belongs same group as deploy.
** No sudo(8) required.

You can change these names by overriding "user" and "runner" options.


## Examples

Following is a sample tasks for multistage deployment ("development" and "production").
Uses "supervisord" for service management. This exapmle consists from 2 files.

* ./fabfile/\__init\__.py - Basic configuration for deployment
* ./fabfile/deploy.py - Overridden tasks for your deployment

./fabfile/\__init\__.py

from fabric.api import *
from fabric_deploy import options
import deploy

options.set('scm', 'git')
options.set('application', 'myapp')
options.set('repository', 'git@githum.com:yyuu/myapp.git')
options.set('supervisord_pid',
(lambda: '%(dir)s/tmp/pids/supervisord.pid' % dict(dir=options.fetch('current_path'))))
options.set('supervisord_conf',
(lambda: '%(dir)s/supervisord.conf' % dict(dir=options.fetch('current_path'))))

@task
def development():
options.set('current_stage', 'development')
env.roledefs.update({'app': [ 'alpha' ] })

@task
def production():
options.set('current_stage', 'production')
env.roledefs.update({ 'app': [ 'zulu' ] })


./fabfile/deploy.py

from fabric_deploy.deploy import *

@task
@roles('app')
def restart():
with cd(fetch('current_path')):
result = sudo("""
(test -f %(supervisord_pid)s && kill -HUP `cat %(supervisord_pid)s`) || %(virtualenv)s/bin/supervisord -c %(supervisord_conf)s
""" % var('virtualenv', 'supervisord_pid', 'supervisord_conf'), user=fetch('runner'))


## Author

Yamashita, Yuu <yamashita@geishatokyo.com>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fabric_deploy-0.4.6.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

fabric_deploy-0.4.6-py2.7.egg (15.5 kB view details)

Uploaded Source

File details

Details for the file fabric_deploy-0.4.6.tar.gz.

File metadata

File hashes

Hashes for fabric_deploy-0.4.6.tar.gz
Algorithm Hash digest
SHA256 72449481d3f57b393ff4761d621aa5b969a9d62b5307799b56adf103416c36e0
MD5 173f9f66bd2f57e34f5f303be3cc60d2
BLAKE2b-256 7a35b5e6461224a3f96ee434870c27712c181d779b88cb6e8dfd76cb496a7cee

See more details on using hashes here.

File details

Details for the file fabric_deploy-0.4.6-py2.7.egg.

File metadata

File hashes

Hashes for fabric_deploy-0.4.6-py2.7.egg
Algorithm Hash digest
SHA256 75f2880c663e80e18a2fd0ec62937c2e124ba199ccd29cb9fe1db1ea69fa528d
MD5 621f85ba8a539f46b5c188f4ecd30823
BLAKE2b-256 9d337b17ca599a242a479dcbd1e75ac472ce721545ec7a57228e73df0ff402b6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page