跳转到主要内容

实例和版本管理变得简单

项目描述

实例和版本管理变得简单

使用单个一致的界面管理在Amazon Web Services或使用Openstack运行的实例

$ gonzo launch production-web-app
...
$ gonzo list

name                               type        status    owner          uptime             location

production-web-app-001             m1.small    RUNNING   tom            0d 0h 1m 18s       eu-west-1b
production-web-db-001              m3.medium   RUNNING   amit           27d 1h 8m 13s      eu-west-1a

使用fab命令轻松定位实例或实例组,并使用包含的fabric任务管理您的代码部署

$ fab gonzo.group:production-ecommerce-web push_release rollforward

配置

设置您的云

命令行界面

在设置多个云环境和/或区域后,使用gonzo config命令选择您想要部署服务器或项目的位置

$ gonzo config
cloud: None
region: None
$ gonzo config --cloud aws
cloud: aws
region: us-west-1
$ gonzo config --region eu-west-1
cloud: aws
region: eu-west-1

管理实例生命周期

选择您想要在其中工作的云和区域后,您可以发出gonzo命令来控制实例的启动、监控和终止。

查看区域中所有正在运行的实例列表

$ gonzo list
name                               type        status    owner          uptime             location

production-web-app-001             m1.small    RUNNING   tom            408d 0h 42m 18s    eu-west-1a
production-web-app-002             m3.medium   RUNNING   amit           27d 1h 8m 13s      eu-west-1b
production-web-db-011              m3.medium   RUNNING   amit           160d 2h 33m 18s    eu-west-1c

向区域添加新的实例,指定服务器类型 - 在您的配置中定义了服务器类型及其大小

$ gonzo launch production-web

获取有关可用命令的更多信息

$ gonzo --help

使用gonzo与fabric一起使用

然后,您可以使用 gonzo 来为 fabric 命令设置目标服务器(或一组服务器)。

在您的 fabfile 中导入 gonzo 以扩展 fabric 的功能

$ cat fabfile.py

from gonzo.tasks import gonzo
__all__ = ['gonzo']

然后,您可以通过 gonzo 在单个实例上运行命令

$ fab gonzo.instance:production-web-003 run_command

或者在一组实例上运行命令

$ fab gonzo.group:production-web run_command

Fabric 任务库

要使用 fabric 任务的 gonzo 库,只需将相关任务模块导入到您的 fabfile 中,以便对命名空间任务进行扩展

from gonzo.tasks import apache

然后可以使用标准的 fabric 语法调用它们

$ fab gonzo.group:production-web apache.restart

或者直接导入任务

from gonzo.tasks.apache import restart

这些命令不会进行命名空间化

$ fab gonzo.group:production-web restart

您可以通过将自定义命令修补到 gonzo 命名空间中来扩展功能,以提供一个干净的 CLI

# ~/apache_maintenance_mode.py
from fabric.api import task, sudo
from gonzo.tasks import apache

def maintenance_mode(off=False):
    """ Set server into maintenance mode.
    """

    if off:
        sudo("a2ensite onefinestay && a2dissite 00maintenance")
    else:
        sudo("a2ensite 00maintenance && a2dissite onefinestay")

apache.maintenance_mode = task(maintenance_mode)

使用 Gonzo 与 CloudInit

CloudInit 可用于自定义您启动的实例。传递给 CloudInit 以处理的新实例的用户数据脚本可以通过使用 config.py 中的 DEFAULT_USER_DATA 配置项为每个云指定

CLOUDS = {
    'cloudname': {

        ...
        'DEFAULT_USER_DATA': 'http://example.com/my-cloudinit-config.txt',
        ...

此外,您可以使用启动参数 --user-data <file | url> 为每个实例指定用户数据脚本

# gonzo launch --user-data ~/.gonzo/cloudinit_web_app production-web-app

用户数据脚本可以指定为文件路径或 URL。

在将用户数据脚本传递给新实例之前,它们首先作为模板渲染,允许它们进行参数化。默认情况下,已经提供了一些,例如主机名、域名和 fqdn。这些可以通过定义 USER_DATA_PARAMS 云配置字典进行补充

CLOUDS = {
    'cloudname': {

        ...
        'DEFAULT_USER_DATA': 'http://example.com/my-cloudinit-config.txt',
        'USER_DATA_PARAMS': {
            'puppet_address': 'puppetmaster.example.com',
        }
        ...

同样,这些参数也可以在启动时通过使用命令行参数 --user-data-params key=val[,key=val..] 进行补充或覆盖

# gonzo launch --user-data ~/.gonzo/cloudinit_web_app \
    --user-data-params puppet_address=puppetmaster2.example.com \
    production-web-app

待办事项

  • 基于项目的功能
    • 项目名称 [for /srv/project_name] (git 设置?)

    • 记录如何用于发布控制

构建状态

https://secure.travis-ci.org/onefinestay/gonzo.png?branch=master

许可证

Apache 2.0 - 详细信息请参阅 LICENSE

更多文档

在 Read the Docs 上的完整文档

项目详情


下载文件

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

源分布

gonzo-0.4.2.tar.gz (20.9 kB 查看哈希)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面