# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

$script = <<EOF
#!/bin/sh
set -x

echo "# jtv\ndeb [arch=amd64] http://mirrors.internal.justin.tv/jtv precise main" > /etc/apt/sources.list.d/jtv.list
wget -qO - http://mirrors.internal.justin.tv/jtv/jtv.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install -y consul daemontools vim jq

sudo mkdir -p /var/run/consul
sudo chown nobody:nogroup /var/run/consul
sudo mkdir -p /var/lib/consul
sudo chown nobody:nogroup /var/lib/consul

sudo mkdir -p /etc/consul.d

ip=`ifconfig eth1 | grep "inet addr" | awk '{print $2 }' | cut -d':' -f2`

tee /etc/consul.d/main.json <<EOL
{
  "bind_addr": "$ip",
  "data_dir": "/var/lib/consul",
  "bootstrap": false,
  "server": true,
  "datacenter": "vagrant",
  "start_join": [
    "10.0.99.15",
    "10.0.99.25",
    "10.0.99.35"
  ]
} 
EOL
EOF

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.provision :shell, :inline => $script

  config.vm.box = "precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"

  config.vm.define "consul1" do |consul1|
    consul1.vm.hostname = "consul1"
    consul1.vm.network "private_network", ip: "10.0.99.15", virtualbox__intnet: "consul"
  end

  config.vm.define "consul2" do |consul2|
    consul2.vm.hostname = "consul2"
    consul2.vm.network "private_network", ip: "10.0.99.25", virtualbox__intnet: "consul"
  end

  config.vm.define "consul3" do |consul3|
    consul3.vm.hostname = "consul3"
    consul3.vm.network "private_network", ip: "10.0.99.35", virtualbox__intnet: "consul"
  end

end
