├── .gitignore ├── README.md ├── Vagrantfile └── install.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .vagrant 2 | .env 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This project enables the use of [tsuru](https://github.com/tsuru/tsuru) 2 | inside a [Vagrant](https://www.vagrantup.com/) virtual machine. It does 3 | this by booting up a Vagrant VM and then downloading and invoking [Tsuru 4 | Now](https://github.com/tsuru/now). 5 | 6 | To start a tsuru + vagrant what you need to do is: 7 | 8 | ~~~bash 9 | $ vagrant up 10 | ~~~ 11 | 12 | This will start a tsuru remote, or target, running at 192.168.50.4. Just browse to 192.168.50.4:8080 for further setup instructions! 13 | 14 | Supported providers 15 | =================== 16 | 17 | tsuru-bootstrap supports multiple providers, you can specify the desired 18 | provider with the ``--provider`` flag: 19 | 20 | ```bash 21 | $ vagrant up --provider= 22 | ``` 23 | 24 | * VirtualBox 25 | * AWS 26 | * libvirt 27 | * Digital Ocean 28 | * Parallels 29 | 30 | 31 | Building tsuru from source for contributing 32 | ------------------------------------------- 33 | 34 | You can also pass options to Tsuru Now via the `TSURU_NOW_OPTIONS` 35 | environment variable -- e.g.: the following will install all the tsuru 36 | components from source along with [Go](https://golang.org/) 1.4 so 37 | you can have a [development environment][] up and running quickly for 38 | [contributing][]: 39 | 40 | $ TSURU_NOW_OPTIONS="--tsuru-from-source" vagrant up 41 | 42 | $ vagrant ssh 43 | vagrant@vagrant-ubuntu-trusty-64:~$ go version 44 | go version go1.4 linux/amd64 45 | 46 | vagrant@vagrant-ubuntu-trusty-64:~$ ls -l ~/go/src/github.com/tsuru 47 | total 32 48 | drwxr-xr-x 3 vagrant vagrant 4096 Dec 23 17:11 commandmocker 49 | drwxr-xr-x 4 vagrant vagrant 4096 Dec 23 17:12 config 50 | drwxr-xr-x 6 vagrant vagrant 4096 Dec 23 17:12 docker-cluster 51 | drwxr-xr-x 16 vagrant vagrant 4096 Dec 23 17:13 gandalf 52 | drwxr-xr-x 3 vagrant vagrant 4096 Dec 23 17:13 go-gandalfclient 53 | drwxr-xr-x 30 vagrant vagrant 4096 Dec 23 17:08 tsuru 54 | drwxr-xr-x 6 vagrant vagrant 4096 Dec 23 17:16 tsuru-admin 55 | drwxr-xr-x 6 vagrant vagrant 4096 Dec 23 17:16 tsuru-client 56 | 57 | [development environment]: http://tsuru.readthedocs.org/en/latest/contributing/vagrant.html 58 | [contributing]: http://tsuru.readthedocs.org/en/latest/contributing/index.html 59 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | # vi: set ft=ruby : 2 | 3 | Vagrant.configure("2") do |config| 4 | config.vm.provision :shell do |shell| 5 | shell.path = "install.sh" 6 | shell.args = [ 7 | ENV["TSURU_BOOTSTRAP"] || "stable", 8 | ENV["TSURU_NOW_SCRIPT_URL"] || "https://raw.githubusercontent.com/tsuru/now/master/run.bash", 9 | ENV["TSURU_NOW_HOOK_URL"] || "https://raw.githubusercontent.com/tsuru/tsuru/master/misc/git-hooks/pre-receive", 10 | ENV["TSURU_NOW_OPTIONS"] || "", 11 | ] 12 | end 13 | 14 | config.vm.provider :vmware_fusion do |vbox, override| 15 | vbox.memory = 3048 16 | override.vm.box = "phusion/ubuntu-14.04-amd64" 17 | end 18 | 19 | config.vm.provider :virtualbox do |vbox, override| 20 | vbox.memory = 3048 21 | override.vm.box = "ubuntu14.04" 22 | override.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box" 23 | override.vm.network :private_network, ip: "192.168.50.4" 24 | end 25 | 26 | config.vm.provider :libvirt do |libvirt, override| 27 | libvirt.driver = "kvm" 28 | libvirt.memory = 3048 29 | override.vm.box = "sputnik13/trusty64" 30 | override.vm.network :private_network, ip: "192.168.50.4" 31 | end 32 | 33 | config.vm.provider :parallels do |prl, override| 34 | prl.memory = 3048 35 | override.vm.box = "parallels/ubuntu-14.04" 36 | override.vm.network :private_network, ip: "192.168.50.4" 37 | end 38 | 39 | config.vm.provider :aws do |aws, override| 40 | override.vm.box = "dummy" 41 | override.vm.box_url = "https://raw.githubusercontent.com/mitchellh/vagrant-aws/master/dummy.box" 42 | override.nfs.functional = false 43 | 44 | override.ssh.username = "ubuntu" 45 | override.ssh.private_key_path = ENV["AWS_PRIVATE_KEY_PATH"] 46 | 47 | aws.access_key_id = ENV["AWS_ACCESS_KEY_ID"] 48 | aws.secret_access_key = ENV["AWS_SECRET_ACCESS_KEY"] 49 | aws.keypair_name = ENV["AWS_KEYPAIR_NAME"] 50 | aws.ami = ENV["AWS_AMI"] 51 | aws.region = ENV["AWS_REGION"] 52 | aws.block_device_mapping = [{ 'DeviceName' => '/dev/sda1', 'Ebs.VolumeSize' => 50 }] 53 | aws.instance_ready_timeout = 300 54 | aws.terminate_on_shutdown = true 55 | aws.tags = { 56 | "Name" => "tsuru_bootstrap", 57 | } 58 | end 59 | 60 | config.vm.provider :digital_ocean do |digitalocean, override| 61 | override.ssh.private_key_path = ENV["DIGITAL_OCEAN_SSH_PATH"] 62 | override.vm.box = 'digital_ocean' 63 | override.vm.box_url = "https://github.com/devopsgroup-io/vagrant-digitalocean/raw/master/box/digital_ocean.box" 64 | digitalocean.token = ENV["DIGITAL_OCEAN_TOKEN"] 65 | digitalocean.image = ENV["DIGITAL_OCEAN_IMAGE"] 66 | digitalocean.region = ENV["DIGITAL_OCEAN_REGION"] 67 | digitalocean.size = ENV["DIGITAL_OCEAN_SIZE"] 68 | end 69 | 70 | end 71 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eu 2 | 3 | # Copyright 2015 tsuru authors. All rights reserved. 4 | # Use of this source code is governed by a BSD-style 5 | # license that can be found in the LICENSE file. 6 | 7 | # ENV["TSURU_BOOTSTRAP"] || "stable" 8 | TSURU_MODE=$1 9 | 10 | # E.g.: "https://raw.githubusercontent.com/tsuru/now/master/run.bash" 11 | TSURU_NOW_SCRIPT_URL=$2 12 | 13 | # E.g.: "https://raw.githubusercontent.com/tsuru/tsuru/master/misc/git-hooks/pre-receive" 14 | TSURU_NOW_HOOK_URL=$3 15 | 16 | # E.g.: "" or "--tsuru-from-source" 17 | TSURU_NOW_OPTIONS=$4 18 | 19 | apt-get update 20 | apt-get install curl -qqy 21 | 22 | curl -sL ${TSURU_NOW_SCRIPT_URL} > /tmp/tsuru-now.bash 23 | chmod +x /tmp/tsuru-now.bash 24 | sudo -iu $SUDO_USER \ 25 | /tmp/tsuru-now.bash \ 26 | --tsuru-pkg-${TSURU_MODE} \ 27 | --hook-url ${TSURU_NOW_HOOK_URL} \ 28 | --hook-name pre-receive \ 29 | ${TSURU_NOW_OPTIONS} 30 | 31 | if [ -d /usr/local/go ]; then 32 | export GOPATH=~vagrant/go 33 | mkdir -p $GOPATH 34 | if [ -f ~vagrant/.bashrc ]; then 35 | if ! grep 'export GOPATH' ~vagrant/.bashrc; then 36 | echo "Adding GOPATH=$GOPATH to ~vagrant/.bashrc" 37 | echo -e "export GOPATH=$GOPATH" | tee -a ~vagrant/.bashrc > /dev/null 38 | fi 39 | fi 40 | fi 41 | --------------------------------------------------------------------------------