This document describes how to create a private PaaS service using tsuru and docker.
This document assumes that tsuru is being installed on a Ubuntu (12.04+) machine. You can use equivalent packages for beanstalkd, git, MongoDB and other tsuru dependencies. Please make sure you satisfy minimal version requirements.
You can use the scripts bellow to quick install tsuru with docker:
$ curl -O https://raw.github.com/globocom/tsuru/master/misc/docker-setup.bash; bash docker-setup.bash
Or follow this steps:
Install docker:
$ sudo sh -c "echo 'deb http://ppa.launchpad.net/dotcloud/lxc-docker/ubuntu precise main' >> /etc/apt/sources.list"
$ sudo apt-get update -y
$ sudo apt-get install lxc-docker -y
Tsuru needs MongoDB stable, distributed by 10gen. It’s pretty easy to get it running on Ubuntu
Tsuru uses Beanstalkd as a work queue. Install the latest version, by doing this:
$ sudo apt-get install -y beanstalkd
Configuring beanstalkd to start, edit the /etc/default/beanstalkd and uncomment this line:
START=yes
Then start beanstalkd:
$ sudo service beanstalkd start
Tsuru uses Gandalf to manage git repositories, to get it installed follow this steps
$ sudo apt-get install git -y
$ sudo useradd git
Let’s create the directory for bare repositories:
$ sudo mkdir -p /var/repositories
$ sudo chown -R git:git /var/repositories
And the directory for template and add the tsuru hooks:
$ sudo mkdir -p /home/git/bare-template/hooks
$ curl https://raw.github.com/globocom/tsuru/master/misc/git-hooks/post-receive > /home/git/bare-template/hooks/post-receive
$ sudo chown -R git:git /home/git/bare-template
sudo bash -c 'echo "bin-path: /usr/bin
database:
url: 127.0.0.1:27017
name: gandalf
git:
bare:
location: /var/repositories
template: /home/git/bare-template
daemon:
export-all: true
host: localhost
webserver:
port: \":8000\"" > /etc/gandalf.conf'
Change the ‘host: localhost’ to your base domain.
You can download pre-built binaries of tsuru and collector. There are binaries available only for Linux 64 bits, so make sure that uname -m prints x86_64:
$ uname -m
x86_64
Then download and install the tsr binary:
$ curl -sL https://s3.amazonaws.com/tsuru/dist-server/tsr.tar.gz | sudo tar -xz -C /usr/bin
These commands will install tsr command in /usr/bin (you will need to be a sudoer and provide your password). You may install this command in your PATH.
Before running tsuru, you must configure it. By default, tsuru will look for the configuration file in the /etc/tsuru/tsuru.conf path. You can check a sample configuration file and documentation for each tsuru setting in the “Configuring tsuru” page.
You can download the sample configuration file from Github:
$ [sudo] mkdir /etc/tsuru
$ [sudo] curl -sL https://raw.github.com/globocom/tsuru/master/etc/tsuru-docker.conf -o /etc/tsuru/tsuru.conf
By default, this configuration will use the tsuru image namespace, so if you try to create an application using python platform, tsuru will search for an image named tsuru/python. You can change this default behavior by changing the docker:repository-namespace config field.
Now that you have tsr properly installed, and you configured tsuru, you’re three steps away from running it.
Start api and collector
$ tsr collector &
$ sudo tsr api &
You can see the logs in:
$ tail -f /var/log/syslog
Congratulations! At this point you should have a working tsuru server running on your machine, follow the tsuru client usage guide to start build your apps.