Gandalf

Gandalf

tsuru可以选择性地使用Gandalf来管理Git仓库,用户可以推送到应用到这些仓库。Gandalf也有责任来这些仓库设置hooks,这样当有新的部署时,会通知tsuru API。更多信息可以参考Gandalf Documentation。

这个文档关注于如何安装Gandalf和设置必要的hook来通知tsuru API。

增加仓库

为tsuru增加包含Gandalf包的仓库:

  1. sudo apt-get update
  2. sudo apt-get install curl python-software-properties
  3. sudo apt-add-repository ppa:tsuru/ppa -y
  4. sudo apt-get update

安装

  1. 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:

  1. sudo apt-get install archive-server

你需要配置Gandalf,安装pre-receive hook,设置合适的环境变量,然后启动Gandalf和archive-server。请注意你应该使用你的machine public地址替代值<your-machine-addr> :

  1. sudo mkdir -p /home/git/bare-template/hooks
  2. sudo curl https://raw.githubusercontent.com/tsuru/tsuru/master/misc/git-hooks/pre-receive.archive-server -o /home/git/bare-template/hooks/pre-receive
  3. sudo chmod +x /home/git/bare-template/hooks/pre-receive
  4. sudo chown -R git:git /home/git/bare-template
  5. cat | sudo tee -a /home/git/.bash_profile <<EOF
  6. export ARCHIVE_SERVER_READ=http://<your-machine-addr>:3232 ARCHIVE_SERVER_WRITE=http://127.0.0.1:3131
  7. EOF

在/etc/gandalf.conf文件中,从"template: /home/git/bare-template"中移除注释,看起来是这样的:

  1. git:
  2. bare:
  3. location: /var/lib/gandalf/repositories
  4. template: /home/git/bare-template

你应该启动gandalf和archive-server:

  1. sudo start gandalf-server
  2. 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“文档中详述。

原文: http://doc.oschina.net/tsuru-paas?t=52792