Skip to content

Instantly share code, notes, and snippets.

@sjkaliski
Created June 26, 2014 19:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sjkaliski/f57f138a93cd81da5a07 to your computer and use it in GitHub Desktop.
Save sjkaliski/f57f138a93cd81da5a07 to your computer and use it in GitHub Desktop.

Bowery Dev

Getting Started

You'll need Vagrant and preferably VMWare Fusion Professional. If you don't already have this, Bowery will get it for you.

Core Repositories

Bowery is comprised of a command line interface, api, remote agent, and an account management system. This will change over time.

  1. Command Line Interface (CLI)
  2. API
  3. Remote Agent
  4. Account Manager

Environment

At the moment, Bowery uses Vagrant to set up three (3) virtual machines; one to run the API, another to host the containers, and a third to run the account manager.

You should place all of these repositories in $GOPATH/src/github.com/Bowery.

Within that directory, clone our Vagrantfile and run:

$ vagrant up --parallel --provider=vmware_fusion

This will take some time...

Getting it Running

CLI

You'll need Go installed on your machine

$ cd $GOPATH/src/github.com/Bowery/SkyLab/cli
$ go get

You can now access the CLI globally. To connect to the API we'll be running:

$ ENV=development DEBUG=cli HOST=10.0.0.15 cli

API

$ vagrant ssh api
$ cd api
$ npm install
$ ENV=development HOST=10.0.0.15 node app.js

Remote Agent

There are two components of the remote agent:

  1. Delancey
  2. Monitor

Delancey is run within a docker container to let us sync files and manage our services remotely.

This is (apologies) a bit gross for now...

$ vagrant ssh dockerd
$ cd delancey
$ go get -d && go build
$ mv delancey satellite
$ cp -f satellite ../images/bowery/
$ cp -rf images/bowery/* /satellite/
$ chown vagrant:vagrant /satellite/satellite

Monitor is run on the machine to let the api know if docker is running as expected, as well as how much memory/disk is available.

$ cd monitor
$ go get
$ ENV=development API=10.0.0.15 HOST=10.0.0.12 monitor

Account Management

todo

Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise64"
config.vm.define "api" do |api|
api.vm.hostname = "api"
api.vm.synced_folder "SkyLab/api", "/home/vagrant/gocode/src/github.com/Bowery/SkyLab/api"
api.vm.network "private_network", ip: "10.0.0.15"
$script = <<-SCRIPT
apt-get install -y python-software-properties
apt-get install -y build-essential
apt-add-repository ppa:chris-lea/node.js
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
apt-get update -y
apt-get install -y nodejs
apt-get install mongodb-org -y
/etc/init.d/mongod start
wget http://download.redis.io/releases/redis-stable.tar.gz
tar -xvzf redis-stable.tar.gz && cd redis-stable && make && make install && ./utils/install_server.sh
service redis_6379 start
update-rc.d redis_6379 defaults
SCRIPT
api.vm.provision "shell", inline: $script
end
config.vm.define "dockerd" do |dockerd|
dockerd.vm.hostname = "dockerd"
dockerd.vm.synced_folder "delancey", "/home/vagrant/gocode/src/github.com/Bowery/delancey"
dockerd.vm.network "private_network", ip: "10.0.0.12"
$script = <<-SCRIPT
apt-get update -y
apt-get install -y python-software-properties
apt-get install -y build-essential
apt-get install -y mercurial
apt-get install -y unzip
apt-get install -y git-core
apt-get install -y libssl-dev
apt-get install -y checkinstall
apt-get install -y curl
SRCROOT="/opt/go"
hg clone -u release https://code.google.com/p/go ${SRCROOT}
cd ${SRCROOT}/src
./all.bash
cat <<EOF >/tmp/gopath.sh
export GOPATH="/opt/gopath"
export PATH="/opt/go/bin:\$GOPATH/bin:\$PATH"
EOF
mv /tmp/gopath.sh /etc/profile.d/gopath.sh
chmod 0755 /etc/profile.d/gopath.sh
echo "deb http://ppa.launchpad.net/bzr/ppa/ubuntu precise main" >> /etc/apt/sources.list
echo "deb-src http://ppa.launchpad.net/bzr/ppa/ubuntu precise main" >> /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D702BF6B8C6C1EFD
apt-get update -y
apt-get install -y bzr
ln -s /opt/go/bin/go /usr/bin/go
chown vagrant:vagrant gocode/ -Rf
apt-get install -y apparmor
echo 'DOCKER_OPTS="-r=true -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"' >> /etc/default/docker
SCRIPT
dockerd.vm.provision "shell", inline: $script
dockerd.vm.provision "docker", images: ["bowery/base"]
end
config.vm.define "broome" do |broome|
broome.vm.hostname = "broome"
broome.vm.synced_folder "broome", "/home/vagrant/gocode/src/github.com/Bowery/broome"
broome.vm.network "private_network", ip: "10.0.0.14"
$script = <<-SCRIPT
apt-get update -y
apt-get install -y python-software-properties
apt-get install -y build-essential
apt-get install -y mercurial
apt-get install -y unzip
apt-get install -y git-core
apt-get install -y libssl-dev
apt-get install -y checkinstall
apt-get install -y curl
SRCROOT="/opt/go"
hg clone -u release https://code.google.com/p/go ${SRCROOT}
cd ${SRCROOT}/src
./all.bash
cat <<EOF >/tmp/gopath.sh
export GOPATH="/opt/gopath"
export PATH="/opt/go/bin:\$GOPATH/bin:\$PATH"
EOF
mv /tmp/gopath.sh /etc/profile.d/gopath.sh
chmod 0755 /etc/profile.d/gopath.sh
echo "deb http://ppa.launchpad.net/bzr/ppa/ubuntu precise main" >> /etc/apt/sources.list
echo "deb-src http://ppa.launchpad.net/bzr/ppa/ubuntu precise main" >> /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D702BF6B8C6C1EFD
apt-get update -y
apt-get install -y bzr
ln -s /opt/go/bin/go /usr/bin/go
chown vagrant:vagrant gocode/ -Rf
apt-add-repository ppa:chris-lea/node.js
apt-get update -y
apt-get install -y nodejs
npm install myth -g
SCRIPT
broome.vm.provision "shell", inline: $script
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment