Cookbook

Here are common recipes that you may use with Parcel. All of these code samples are available in the docs/examples directory.

Building a Debian Package

from fabric.api import env, task
from fabric.tasks import Task
from parcel import distro
from parcel import deploy

env.app_name = 'default_app_name'
env.run_deps = []
env.build_deps = []
env.base = None
env.path = '.'
env.arch = distro.debian

@task
def build():
    """Instantiate a Deployment object and
    build a Debian based package."""
    d = deploy.Deployment(app_name=env.app_name,
                          build_deps=env.build_deps,
                          run_deps=env.run_deps,
                          path=env.path,
                          base=env.base,
                          arch=env.arch
                          )
    d.prepare_app()
    d.build_package()

Building a Debian Package for uWSGI deployment

from fabric.api import env, task
from fabric.tasks import Task
from parcel import distro
from parcel import deploy

env.app_name = 'default_app_name'
env.run_deps = []
env.build_deps = []
env.base = None
env.path = '.'
env.arch = distro.Debian()

@task
def build_for_uwsgi():
    """Instantiate a Deployment object and build a Debian based package for
    uwsgi deployment."""
    assert hasattr(env, 'service_name'), "You need to set env.service_name"
    assert hasattr(env, 'service_port'), "You need to set env.service_port"
    d = deploy.uWSGI(app_name=env.app_name,
                     build_deps=env.build_deps,
                     run_deps=env.run_deps,
                     path=env.path,
                     base=env.base,
                     arch=env.arch
                     )
    d.prepare_app()
    d.add_supervisord_uwsgi_service(env.service_name, env.service_port)
    d.build_package()

Building a Centos RPM Package

from fabric.api import env, task
from fabric.tasks import Task
from parcel import distro
from parcel import deploy
from parcel.helpers import setup_centos

# NB: Centos will need to have EPEL activated and be using a more modern python than 2.4

env.app_name = 'default_app_name'
env.run_deps = []
env.build_deps = []
env.base = "/usr/local/webapps/"
env.path = '.'
env.arch = distro.centos

@task
def build():
    """Instantiate a Deployment object and
    build an RPM based package."""
    d = deploy.Deployment(app_name=env.app_name,
                          build_deps=env.build_deps,
                          run_deps=env.run_deps,
                          path=env.path,
                          base=env.base,
                          arch=env.arch
                          )

    d.prepare_app()
    d.build_package()

Table Of Contents

Related Topics

This Page