实例和发布管理变得简单
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与织物一起使用
然后可以使用gonzo为 fabric命令。
在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设置?)
- 记录如何用于释放控制
许可证
apache 2.0-有关详细信息,请参见许可证