面料和木偶的优雅部署。

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进度条?   ChromeDriver出现“java.lang.module.InvalidModuleDescriptorException:提供程序类org.apache.bsf.BSFManager不在模块中”错误   java如何将Google日历链接到应用程序?   java线程信令序列   java StackOverflowerr不知道出了什么问题   从azure mobile apps easy tables获取表格时,java Android应用程序冻结   java Android应用程序无法连接到firebase数据库   java如何将属性文件中的值注入字段?   无法创建java Spring引导CXF XMLOutputFactory   javaui:月份选择器   获取java数组中n个最大值的索引   java注入servlet调度器中的EntityManagerFactory(非托管)   我在Android Studio中编写java代码,需要从特定网页获取并显示特定行的数据   java如何在Hibernate中设置内部查询的限制?   java如何编写接受一个数组和两个整数的交换方法   基于递归的java快速供电方法