{ "info": { "author": "Jukka Ojaniemi", "author_email": "jukka.ojaniemi@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Programming Language :: Python :: 2.7" ], "description": "Aja\n===\n\n.. image:: https://secure.travis-ci.org/pingviini/aja.png\n :target: http://travis-ci.org/pingviini/aja\n\nAja provides Fabric_ tasks for deploying buildouts_ from staging server to\nremote production servers:\n\n* it assumes buildout with absolute path (this is the buildout default)\n\n* it assumes that all the relevant paths (python, buildout, shared eggs, etc)\n are identical for the staging and production servers\n\n* bootstrap and buildout are always run on the staging server only\n\n* buildout is deployed by pushing its bin-, parts- and (local or shared)\n eggs-directories into the remote production server using rsync\n\n.. _buildout: https://pypi.python.org/pypi/zc.buildout\n.. _buildouts: https://pypi.python.org/pypi/zc.buildout\n.. _Fabric: https://pypi.python.org/pypi/Fabric\n\n\nInstallation\n------------\n\nAja can be installed like any Python package:\n\n.. code:: bash\n\n $ pip install aja\n\nBut be aware that Aja comes with the following dependencies\n\n* Fabric\n* paramiko\n* zc.buildout\n* setuptools\n* ecdsa\n* pycrypto\n\nand therefore, it's recommended to use a dedicated virtualenv.\n\nAja doesn't have it's own executable, but is executed using Fabric's ``fab``\ncommand. Of course, it is possible to symlink that as ``aja``.\n\n\nConfiguration\n-------------\n\nAja is configured with a fabfile, e.g. ``fabfile.py``:\n\n.. code:: python\n\n import fabric.api\n fabric.api.env.update({\n 'buildout_directory_prefix': '', # optional\n 'buildout_extends_prefix': '', # optional\n })\n from aja.tasks import *\n\n\n``buildout_directory_prefix`` provides optional convenience when creating new\nbuildouts or when looking for buildouts for the other commands.\n\n``buildout_extends_prefix`` provides optional convenience when creating new\nbuildout.\n\n\nUsage\n-----\n\nAja maps Fabric's hosts into buildouts so that for each buildout, it fills\n``fabric.api.env`` with variables from ``[aja]`` part in the buildout (this is\nquite similar to `collective.hostout`_). The rest of the resolved buildout file\ncan be found at ``fabric.api.env.buildout``.\n\n.. _collective.hostout: https://pypi.python.org/pypi/collective.hostout\n\nAn example ``[aja]`` part could look like:\n\n.. code:: ini\n\n [aja]\n executable = /usr/local/python/bin/python\n host_string = buildout@production\n key_filename = /home/buildout/.ssh/id_rsa\n\nThis part would configure Aja tasks to use particular Python virtualenv for\nrunning the buildout\nand\npush the results into server ``production`` by performing rsync using the\ngiven key file.\n\nExample Aja usage could look like:\n\n.. code:: bash\n\n $ fab create:/var/buildout/plone,/vagrant/plone-4.3.cfg\n $ fab -H /var/buildout/plone buildout push\n\nAnd with the following convenience configuration in fabfile:\n\n.. code:: python\n\n import fabric.api\n fabric.api.env.update({\n 'buildout_directory_prefix': '/var/buildout',\n 'buildout_extends_prefix': '/vagrant',\n })\n from aja.tasks import *\n\nThe previous example usage could look like:\n\n.. code:: bash\n\n $ fab create:plone,plone-4.3.cfg\n $ fab -H plone buildout push\n\n.. note::\n\n ``buildout_extends_prefix`` can also be an URL like\n ``http://myserver/buildouts/``\n\n\nExtending\n---------\n\nAja provides only the most basic fabric tasks, but it provides a custom\ntask class ``aja.tasks.AjaTask``, which provides resolved buildout\nat ``fabric.api.env.buildout``. This makes it easy to define custom tasks\nin your fabfile, e.g.\n\n.. code:: python\n\n from fabric import api\n from fabric.operations import run\n from aja.tasks import AjaTask\n\n @task(task_class=AjaTask)\n def purge():\n buildout_bin = api.env.buildout['buildout'].get('bin-directory')\n buildout_parts = api.env.buildout['buildout'].get('parts-directory')\n run('rm -rf {0:s}'.format(buildout_bin))\n run('rm -rf {0:s}'.format(buildout_parts))\n purge.__doc__ = \\\n \"\"\"Clean bin- and parts-directories (e.g. before push)\n \"\"\"\n\nChangelog\n=========\n\n0.9.2 (2017-05-10)\n------------------\n\n- Add support for bootstrap cmd to read setuptools and zc.buildout versions\n from buildout\n [datakurre]\n\n0.9.1 (2016-04-26)\n------------------\n\n- Add aja-alias for fabric as a console script\n [datakurre]\n\n0.9.0 (2015-01-14)\n------------------\n\n- First release.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pingviini/aja", "keywords": "deploy buildout", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "aja", "package_url": "https://pypi.org/project/aja/", "platform": "", "project_url": "https://pypi.org/project/aja/", "project_urls": { "Homepage": "https://github.com/pingviini/aja" }, "release_url": "https://pypi.org/project/aja/0.9.2/", "requires_dist": null, "requires_python": "", "summary": "Buildout-based deployment made safe and easy", "version": "0.9.2" }, "last_serial": 2863605, "releases": { "0.9.0": [ { "comment_text": "", "digests": { "md5": "62de8b4ee5b696269ae615961f4918cf", "sha256": "a4a30409fdd2bf4d0637ec4e89db9249298c503048ad94a6bd69a89dfaaee21e" }, "downloads": -1, "filename": "aja-0.9.0.zip", "has_sig": false, "md5_digest": "62de8b4ee5b696269ae615961f4918cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14853, "upload_time": "2015-01-14T08:46:54", "url": "https://files.pythonhosted.org/packages/8d/28/a9aea61ff1a52825e9e5f23bf67f56b588656831b18ef237b5a3e72c8e74/aja-0.9.0.zip" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "41ffa8c8393255580e1c1ca2c5e3bb55", "sha256": "9ccfa79fb249b1f412683fb9036d7b9354067ad54f8148e71b07d71939e5f0e8" }, "downloads": -1, "filename": "aja-0.9.1.tar.gz", "has_sig": false, "md5_digest": "41ffa8c8393255580e1c1ca2c5e3bb55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9451, "upload_time": "2016-04-26T11:48:47", "url": "https://files.pythonhosted.org/packages/95/a6/cd8ca3c1a5464f34caa7aa6fdcfd21553346dd88ef3c0948a0f4630fa074/aja-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "e3ec5676ac210c5b28f687bb34929793", "sha256": "b889dd09fd450ea0df86b6231a5028456108662a73c2373a1e74cc5870789ee8" }, "downloads": -1, "filename": "aja-0.9.2.tar.gz", "has_sig": false, "md5_digest": "e3ec5676ac210c5b28f687bb34929793", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17893, "upload_time": "2017-05-10T07:13:05", "url": "https://files.pythonhosted.org/packages/5d/ae/1f7f495910fff6c18b64d675b16919cb60a62adcf445c36ea5ef40f18d87/aja-0.9.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e3ec5676ac210c5b28f687bb34929793", "sha256": "b889dd09fd450ea0df86b6231a5028456108662a73c2373a1e74cc5870789ee8" }, "downloads": -1, "filename": "aja-0.9.2.tar.gz", "has_sig": false, "md5_digest": "e3ec5676ac210c5b28f687bb34929793", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17893, "upload_time": "2017-05-10T07:13:05", "url": "https://files.pythonhosted.org/packages/5d/ae/1f7f495910fff6c18b64d675b16919cb60a62adcf445c36ea5ef40f18d87/aja-0.9.2.tar.gz" } ] }