实例和发布管理变得简单

gonzo的Python项目详细描述


实例和发布管理变得简单

使用amazon web services或使用openstack管理运行在amazon web services中的实例 单一一致的界面:

$ 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命令轻松定位实例或实例组 并使用包含的结构任务管理代码部署:

$ 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与织物一起使用

然后可以使用gonzofabric命令。

在fab文件中导入gonzo以使用gonzo功能扩展fab:

$ 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

结构任务库

要使用结构任务的gonzo库,只需导入相关任务 用于将命名空间任务的模块放入fab文件:

from gonzo.tasks import apache

然后可以使用标准结构语法调用它们:

$ 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_DATAconfig项,每个云
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_PARAMScloud配置字典:

CLOUDS = {
    'cloudname': {

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

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

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

待办事项

  • 基于项目的内容
    • 项目名称[用于/srv/project_name](Git设置?)
    • 记录如何用于释放控制

生成状态

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

许可证

apache 2.0-有关详细信息,请参见许可证

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java类。getResource和ClassLoader。getSystemResource:有没有理由选择其中一个而不是另一个?   在Java中以编程方式粘贴后恢复剪贴板   Java字符串到日期没有时间   JavaSpring注释:@Component起作用,@Repository不起作用   java“addScript”在HSQL中是否有最大记录计数?   java如何将值从JDialog框返回到父JFrame?   java我的模块库的用户有没有办法访问尚未导出的类?   java javac:未找到命令   java如何解决jsoup错误:无法找到请求目标的有效证书路径   类中的java作用域变量   Java中集合实现中的arraylist add()方法不起作用   java如何使用while循环和从用户接收输入来近似Pi?   java Spring安全CSRF培训模式   在安卓系统中,如何通过在警报框外单击来限制用户?