面料和木偶的优雅部署。
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)
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.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.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)