编写可管理农奴处理程序的助手
serf_master的Python项目详细描述
#农奴主[构建
状态](https://secure.travis ci.org/garethr/serf master.png)(http://travis ci.org/garethr/serf master)
[![覆盖范围
状态](https://covertalls.io/repos/garethr/serf-master/badge.png?branch=master)](https://coveralls.io/r/garethr/serf-master?分支=主)
[![代码
运行状况](https://landscape.io/github/garethr/serf master/master/landscape.png)(https://landscape.io/github/garethr/serf master/master)
[服务器](http://www.serfdom.io/)是一个非常好的服务发现和
编排框架,它允许您编写脚本来响应基础结构中的不同事件。不过,大多数
示例都是简单的shell脚本,其中嵌入了大量逻辑。
将其与围绕注册事件
处理程序的每主机配置结合起来,很容易构建一个不可靠的、难以推理的
环境。不一定非得这样。
serf是一个框架,你在上面构建的东西很重要。我想要具有以下属性的
*可测试的。我应该能够对整个配置进行单元测试。
*单个包。所有主机都应该得到相同的代码,代码
决定在哪里运行什么。
*单个事件处理程序。我宁愿处理关于用户事件或代码中角色的逻辑,而不是serf的参数。
*使处理程序可共享。您可以简单地扩展“serfhandler”并打包您自己的处理程序,例如“serf\u master\u haproxy”。
serf master尝试这样做,呈现为一个非常小的python框架,没有依赖关系。这里有一个例子:
数据库服务器具有“db”的serf角色,web服务器具有“web”的serf
角色。我们希望当一个新的服务器被添加到集群时,web服务器能够做出反应(也许是告诉负载均衡器重新加载?)我们希望能够触发部署。对于数据库服务器,我们希望
能够触发备份自定义事件。
`` python
!/usr/bin/env python
来自serf_master import serfhandler,serfhandlerproxy
class webhandler(serfhandler):
def def deploy(self):
备份
webhandler())
```
这表示如果serf角色是“web”,则使用“webhandler”类来处理任何事件。
``python
``def member\u join(self):
````
经过测试。
配置
只需将所有事件处理程序连接到
脚本,就像这样:
``bash
serf agent-事件处理程序/opt/your/script.py
````
##安装
serf master可在
[pypi]上获得(https://pypi.python.org/pypi/serf_master),并可通过以下方式安装
状态](https://secure.travis ci.org/garethr/serf master.png)(http://travis ci.org/garethr/serf master)
[![覆盖范围
状态](https://covertalls.io/repos/garethr/serf-master/badge.png?branch=master)](https://coveralls.io/r/garethr/serf-master?分支=主)
[![代码
运行状况](https://landscape.io/github/garethr/serf master/master/landscape.png)(https://landscape.io/github/garethr/serf master/master)
[服务器](http://www.serfdom.io/)是一个非常好的服务发现和
编排框架,它允许您编写脚本来响应基础结构中的不同事件。不过,大多数
示例都是简单的shell脚本,其中嵌入了大量逻辑。
将其与围绕注册事件
处理程序的每主机配置结合起来,很容易构建一个不可靠的、难以推理的
环境。不一定非得这样。
serf是一个框架,你在上面构建的东西很重要。我想要具有以下属性的
*可测试的。我应该能够对整个配置进行单元测试。
*单个包。所有主机都应该得到相同的代码,代码
决定在哪里运行什么。
*单个事件处理程序。我宁愿处理关于用户事件或代码中角色的逻辑,而不是serf的参数。
*使处理程序可共享。您可以简单地扩展“serfhandler”并打包您自己的处理程序,例如“serf\u master\u haproxy”。
serf master尝试这样做,呈现为一个非常小的python框架,没有依赖关系。这里有一个例子:
数据库服务器具有“db”的serf角色,web服务器具有“web”的serf
角色。我们希望当一个新的服务器被添加到集群时,web服务器能够做出反应(也许是告诉负载均衡器重新加载?)我们希望能够触发部署。对于数据库服务器,我们希望
能够触发备份自定义事件。
`` python
!/usr/bin/env python
来自serf_master import serfhandler,serfhandlerproxy
class webhandler(serfhandler):
def def deploy(self):
备份
webhandler())
```
这表示如果serf角色是“web”,则使用“webhandler”类来处理任何事件。
``python
``def member\u join(self):
````
经过测试。
配置
只需将所有事件处理程序连接到
脚本,就像这样:
``bash
serf agent-事件处理程序/opt/your/script.py
````
##安装
serf master可在
[pypi]上获得(https://pypi.python.org/pypi/serf_master),并可通过以下方式安装