萝卜
turnip的Python项目详细描述
萝卜
Turip是用Python编写的灵活可扩展的Git服务器套件 使用扭曲的。
各种服务器提供可定制的虚拟主机,具有灵活性。 认证和授权,以及个人横向扩展 存储层的前端。
这里的python接口都不应该被认为是稳定的。
架构
<> > Trip的架构是为了最大化简单性和可扩展性而设计的。 以及稳健性。每个服务器提供大约一个服务,并且 安装只需要运行它想要的服务器。大多数服务器 避免使用本地状态来简化水平缩放 本地状态可以复制和/或分片它。有两个独立的服务器堆栈:pack和api。背包 通过包协议(git://)与git客户端进行通信,smart http或智能ssh。http和ssh前端打开隧道包 协议,并将其作为普通包协议转发到中间端 连接。单独的http api堆栈提供了一个编程远程 存储库上高级读写操作的接口
-
前端:
- 包装
- 智能http
- 智能ssh
- http api
- 中端:
- 包虚拟化
- API虚拟化
- 后端:
- 包装
- API
内部协议
Turnip对大多数通信使用Git-Pack协议的扩展 在服务器之间。唯一的变化是萝卜请求可以指定 任意命名参数,而不仅仅是主机名。
git pack协议的git proto请求的相关部分是 用ABNF表示如下:
git-proto-request = request-command SP pathname NUL [ host-parameter NUL ] host-parameter = "host=" hostname [ ":" port ]
萝卜原型请求将其更改为:
turnip-proto-request = request-command SP pathname NUL \*( param NUL ) param = param-name "=" param-value param-name = \*( %x01-3C / %x3E-FF ) ; exclude NUL and = param-value = \*%x01-FF ; exclude NUL
今天实现的唯一附加参数是 “turnip stateless rpc”和“turnip advertide refs”,用于 代理到标准包协议的智能http服务器。
发展
设置
创建可信容器(可选):
sudo lxc-create -t ubuntu -n turnip.trusty -- -r trusty -a amd64 -b $USER
运行以下命令:
sudo add-apt-repository ppa:launchpad/ppa sudo apt-get update cat system-dependencies.txt | sudo xargs apt-get install -y --no-install-recommends
运行
pack smart http/ssh服务可以通过以下方式启动:
python turnipserver.py
http api可以使用以下命令启动:
make run-api
部署
萝卜配有萝卜菊花咒,可从以下网址获得:
git clone https://git.launchpad.net/~canonical-launchpad-branches/charms/+source/turnip
与本地提供商一起部署:
juju switch local juju bootstrap juju deploy –repository=/path/to/loca/charm/repo/root local:trusty/turnip
萝卜新闻
0.1.1(2015-06-11)
- 添加合并检测API。
0.1(2015-06-02)
- 初次发布。