In April, Pivotal released Lattice, a platform for hosting cloud native applications which is aimed at being accessible and convenient for developers. However, it’s not just that: it’s also a testbed for the new elastic runtime codename ‘Diego’ which we will likely see incorporated in the next version of Lattice’s big – enterprise ready – brother Pivotal Cloud Foundry in due time. This new runtime comes with the ability to run Docker workloads which makes it very interesting.
In this post, I’ll describe the minimal steps required to set up a machine in which we create another VM using vagrant and virtualbox which will run Lattice and host its first containerized workloads. Note: in case you already run VMware fusion/workstation and the VMware integration for vagrant, you don’t need the initial hosting VM, so you can skip the first steps and go directly to ‘Get Lattice’.
Create a virtual machine
In fact, it doesn’t have to be virtual, just get a x64 machine, either physical or using your hypervisor of choice. Since this machine will run its own virtualized workload, it’s essential it has virtualization instructions, either hardware based or virtualized. For example in VMware Workstation this option shows as:
Install Ubuntu
Install the latest stable Ubuntu (desktop), and make sure it’s updated.
Install vagrant and virtualbox
In order to spin up the lattice machine, we’ll use virtualbox, and to provision it lattice depends on vagrant. For vagrant we need a version (>1.6) which is not by default in the ubuntu repos, so we install it via direct download:
sudo apt-get install virtualbox
wget https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.2_x86_64.deb
sudo dpkg -i vagrant_1.7.2_x86_64.deb
Get lattice
Install git and clone the lattice repository:
sudo apt-get install git
git clone https://github.com/cloudfoundry-incubator/lattice.git
cd lattice
git checkout <VERSION>
Here <VERSION> is the version you find in the file ‘Version’.
Next provision the virtual machine with
vagrant up
Of course we could ssh to the lattice VM now, but the idea is to access it via API calls. The lattice CLI wraps the API and offers a convenient interface.
Get/build the lattice CLI
You can build the lattice CLI from source, or download a binary. If you take the download option you can skip the following paragraph.
Building the CLI from source
In order to do this we need Go, and again the version in the ubuntu repos is too old (<1.4):
wget --no-check-certificate --no-verbose https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.4.2.linux-amd64.tar.gz
And to setup the build environment:
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
If you want this to persist, add the exports to ~/.bashrc
Now build the CLI binary:
go get -d github.com/cloudfoundry-incubator/lattice/ltc
$GOPATH/src/github.com/cloudfoundry-incubator/lattice/ltc/scripts/install
You can check if the CLI has been build successfully by typing: ltc
Connecting to the lattice
Point the CLI to the lattice instance:
ltc target <system_ip_from_Vagrantfile>.xip.io
If you run into errors or timeouts at this stage, try to ping the lattice VM, or (re)start the lattice VM directly from VirtualBox which will usually tell you what’s wrong.
Running a test workload
A Docker container hosting a simple test web application is available in the Docker hub. You can spin up your first instance with:
ltc create lattice-app cloudfoundry/lattice-app
Check it’s status with
ltc status lattice-app
Next, spin up a few more with
ltc scale lattice-app 4
When this is done, point a browser at lattice-app.<system_ip_from_Vagrantfile>.xip.io
and refresh a couple of times to see the built in load balancing and router in action.