面料和木偶的优雅部署。

loom的Python项目详细描述


织布机[构建状态](https://travis-ci.org/bfirsh/loom.png?branch=master)(https://travis ci.org/bfirsh/loom)


puppet和[fabric](http://fabfile.org)的优雅部署。


loom做了puppet做得不好或根本做不好的事情:引导机器、赋予它们角色、部署puppet代码和安装可重用的puppet模块。它对于无服务器和主/代理puppet安装都很有用。

它还包括一些构建和上载应用程序代码的构造任务–一些与puppet相关的特别复杂的任务。

install
----


$sudo pip install loom

arted
----


首先,创建"fabfile.py"并定义主机:

from fabric.api import*
from loom import puppet
from loom.tasks import*

env.environment='prod'
env.roledefs={
'web':['prod-web-1.example.com','prod-web-2.example.com'],
'db':['prod-db-1.example.com'],
}


r/>mod"puppetlabs/mysql"

(这是针对[图书管理员木偶](http://library puppet.com/),一个用于安装可重用木偶模块的工具。它也可以从git等安装)

角色在名为"roles"的魔术模块中定义,该模块包含每个角色的清单。(如果您以前使用过puppet,这是对"node"定义的替换。)


例如,"modules/roles/manifests/db.pp"定义了db角色是什么:

class roles::db{
include mysql
等等,就这样!

让我们设置一个数据库服务器。首先,引导主机(在本例中,在"env.roledefs"中定义的单个db主机):

$fab-r db puppet.install


>然后安装第三方puppet模块,上载本地模块并应用它们:

$fab-r db puppet.update puppet.apply

对模块进行更改后,可以运行该命令来应用它们。因为这只是一个fabric,所以您可以在"fabfile.py"中编写一个任务来完成它:

@task
def deploy\puppet():
execute(puppet.update)
execute(puppet.apply)

$fab all deploy_u puppet


apps
---


loom包含一系列构造任务,用于生成和上载代码。它假设您已经为应用程序设置了一个角色(例如,"web"),并且该角色拥有启动应用程序所需的所有软件包和一个up start in it脚本。

loom中的应用程序是使用"env.apps"配置的。这是一个字典,其中键是应用程序的名称,值是包含以下键的字典:

-**repo**(必需):包含应用程序的repo的git url。
-**role**(必需):应用程序将上载到的角色。
-**build**:本地运行的脚本b上传前(例如,建立静态资产或安装本地依赖项)。
-**上传后**:上传后在每台服务器上运行的脚本。
-**初始化**:上传后要启动/重新启动的新启动脚本的名称。

以"env.app_root"为例,假设这是您的"fabfile.py":


from fabric.api import*
from loom import app,puppet
from loom.tasks import*

env.environment='prod'
env.roledefs={
'web':['prod-web-1.example.com,'prod-web-2.example.com'],
'db':['prod-db-1.example.com'],
}
env.app_root='/home/ubuntu'
env.apps['web']={
"repo":"https://user:pass@github.com/mycompany/mycompany web.git",
"role":"web",
"build":"script/build",
"init":"web",
}

`/etc/init/web.conf`要在`/home/ubuntu/web`.中运行应用程序,运行:



$fab app.deploy:web


在本地调出github存储库。
2.运行"script/build"。
3.将您的代码上传到"prod-app-1.example.com"和"prod-app-2.example.com"上的"/home/ubuntu/web"。
4.运行"sudo restart web"。



os-support
——


它只在ubuntu 12.04上测试过。我想支持更多的事情。发送修补程序!

api
--

这都是织物任务,而且很容易阅读。(抱歉。)


运行测试//github.com/xironix)
*[spencer herzberg](https://github.com/sherzberg)

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

推荐PyPI第三方库


热门话题
java BufferedReader未返回   python使用javax从Java调用Jython。脚本   java如何为我的程序获得正确的输出(字符串格式)?   java我选择UDP作为我的对等2对等服务,我如何证明它在我的情况下是可靠的   多线程Java大型线程池性能问题   java将ActionListener与GUI类分离,无法正常工作   java如何管理内存中的视频帧   java如何在Spring mvc和mongodb中下载文件   使用TestNG和maven调试java应用程序   java转换和片段   java日语字符在ReadOnlySharedStringsTable中未正确显示   对象属性如何满足Java编译器关于设置SimpleObject属性的未检查警告   java字符串。replaceAll比自己做这项工作要慢得多   多线程如何在Java中的线程之间共享Hashmap?   java不正确的AVA格式:BlackBerry WebWorks SDK   线程“main”java中出现异常。lang.ArrayIndexOutOfBoundsException:索引1超出长度1的界限   java为什么这个处理代码会创建递减轨迹?   java tapestry4:从IEngineService实现访问访问对象   java动态分配多维字符串数组的大小和元素