跳转到主要内容

基于Buildout的部署变得安全且简单

项目描述

Aja

https://secure.travis-ci.org/pingviini/aja.png

Aja为从预发布服务器部署Fabric任务到远程生产服务器提供了buildouts

  • 它假设buildout具有绝对路径(这是buildout的默认设置)

  • 它假设所有相关路径(python、buildout、共享eggs等)在预发布和生产服务器上都是相同的

  • bootstrap和buildout始终在预发布服务器上运行

  • 通过使用rsync将bin-、parts-和(本地或共享)eggs目录推送到远程生产服务器来部署buildout

安装

Aja可以像任何Python包一样安装

$ pip install aja

但请注意,Aja包含以下依赖项

  • Fabric

  • paramiko

  • zc.buildout

  • setuptools

  • ecdsa

  • pycrypto

因此,建议使用专用虚拟环境。

Aja没有自己的可执行文件,但通过Fabric的fab命令执行。当然,可以将其链接到aja

配置

Aja使用fabfile进行配置,例如fabfile.py

import fabric.api
fabric.api.env.update({
    'buildout_directory_prefix': '',  # optional
    'buildout_extends_prefix': '',    # optional
})
from aja.tasks import *

buildout_directory_prefix在创建新buildout或查找其他命令的buildout时提供可选的便利。

buildout_extends_prefix在创建新buildout时提供可选的便利。

用法

aja 将 Fabric 的主机映射到构建区域,以便为每个构建区域,它使用构建区域中的 [aja] 部分中的变量填充 fabric.api.env(这与 collective.hostout 非常相似)。其余解析的构建区域文件可以在 fabric.api.env.buildout 中找到。

一个示例 [aja] 部分可能如下所示

[aja]
executable = /usr/local/python/bin/python
host_string = buildout@production
key_filename = /home/buildout/.ssh/id_rsa

此部分将配置 Aja 任务使用特定的 Python 虚拟环境来运行构建区域,并通过使用提供的密钥文件执行 rsync 将结果推送到服务器 production

以下是 Aja 使用的示例

$ fab create:/var/buildout/plone,/vagrant/plone-4.3.cfg
$ fab -H /var/buildout/plone buildout push

并在 fabfile 中有以下方便的配置

import fabric.api
fabric.api.env.update({
    'buildout_directory_prefix': '/var/buildout',
    'buildout_extends_prefix': '/vagrant',
})
from aja.tasks import *

前面的示例使用可能如下所示

$ fab create:plone,plone-4.3.cfg
$ fab -H plone buildout push

扩展

Aja 只提供最基础的 fabric 任务,但它提供了一个自定义任务类 aja.tasks.AjaTask,它提供解析后的构建区域在 fabric.api.env.buildout。这使得在您的 fabfile 中定义自定义任务变得容易,例如。

from fabric import api
from fabric.operations import run
from aja.tasks import AjaTask

@task(task_class=AjaTask)
def purge():
    buildout_bin = api.env.buildout['buildout'].get('bin-directory')
    buildout_parts = api.env.buildout['buildout'].get('parts-directory')
    run('rm -rf {0:s}'.format(buildout_bin))
    run('rm -rf {0:s}'.format(buildout_parts))
purge.__doc__ = \
    """Clean bin- and parts-directories (e.g. before push)
    """

变更日志

0.9.2 (2017-05-10)

  • 添加对 bootstrap 命令的支持,以从构建区域中读取 setuptools 和 zc.buildout 版本 [datakurre]

0.9.1 (2016-04-26)

  • 添加 aja-alias 作为 fabric 的控制台脚本 [datakurre]

0.9.0 (2015-01-14)

  • 第一个版本。

项目详情


下载文件

下载您平台上的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源分布

aja-0.9.2.tar.gz (17.9 kB 查看散列)

由以下支持