Gandalf
Gandalf
tsuru可以选择性地使用Gandalf来管理Git仓库,用户可以推送到应用到这些仓库。Gandalf也有责任来这些仓库设置hooks,这样当有新的部署时,会通知tsuru API。更多信息可以参考Gandalf Documentation。
这个文档关注于如何安装Gandalf和设置必要的hook来通知tsuru API。
增加仓库
为tsuru增加包含Gandalf包的仓库:
sudo apt-get update
sudo apt-get install curl python-software-properties
sudo apt-add-repository ppa:tsuru/ppa -y
sudo apt-get update
安装
sudo apt-get install gandalf-server
在git push过程中,执行部署。为了让它工作,你需要增加一个pre-receive hook。tsuru和pre-receive hook都需要更多的配置:
- s3cmd:使用Amazon S3来存储和服务归档- archive-server:使用tsuru的archive-server来存储和服务归档- swift:使用Swift来存储和服务归档(与Rackspace Cloud Files兼容)
在这个文档中,我们会使用archive-server,但是你可以使用任何能存储git归档的东西,并通过HTTP或者FTP来提供服务。你也可以使用apt-get来安装archive-server:
sudo apt-get install archive-server
你需要配置Gandalf,安装pre-receive hook,设置合适的环境变量,然后启动Gandalf和archive-server。请注意你应该使用你的machine public地址替代值<your-machine-addr> :
sudo mkdir -p /home/git/bare-template/hooks
sudo curl https://raw.githubusercontent.com/tsuru/tsuru/master/misc/git-hooks/pre-receive.archive-server -o /home/git/bare-template/hooks/pre-receive
sudo chmod +x /home/git/bare-template/hooks/pre-receive
sudo chown -R git:git /home/git/bare-template
cat | sudo tee -a /home/git/.bash_profile <<EOF
export ARCHIVE_SERVER_READ=http://<your-machine-addr>:3232 ARCHIVE_SERVER_WRITE=http://127.0.0.1:3131
EOF
在/etc/gandalf.conf文件中,从"template: /home/git/bare-template"
中移除注释,看起来是这样的:
git:
bare:
location: /var/lib/gandalf/repositories
template: /home/git/bare-template
你应该启动gandalf和archive-server:
sudo start gandalf-server
sudo start archive-server
使用Gandalf来配置tsuru:
为了使用Gandalf,你应该相应地修改tsuru.conf:
- 定义repo-manager来使用gandalf;
- 定义“git api-server”来指向到Gandalf服务端的API(example: "http://localhost:8000")
查看更多细节,请参考“configuration page“。
为使用tsuru API认证的Token
这是配置Gandalf的最后一步。它涉及到生成接入token,这样我们创建的hook可以加入到tsuru API。这必须在安装了tsuru API之后再做。在”installation step“文档中详述。