Łukasz Korecki, one of our many talented developers here at Geckoboard, is in charge of making sure that operations run smoothly. He wanted everyone to work as closely to the production version of Geckoboard as possible, and when no single solution fit the bill, he put together his own. Below you’ll find out how he did it.
Automation is the key. That’s why I’ve been working hard to make sure every member of our product team (developers and designers) are using the same setup and work in an environment as close as possible to our production version of Geckoboard.
Most of the developers at Geckoboard are fans of text-based tools and UNIX philosophy, so for a long time our standard setup was Vim and tmux. These tools work brilliantly when combined with an isolated development environment accessible over SSH.
Ghost in the shell
Vagrant offers quite a few ways of accessing files from outside, but those that are performant are not problem-free. For example, Geckoboarders who prefer a fancy looking text editor were faced with problems when they tried to access the virtual machine.
After a lot of research, I decided to implement my own solution (uh-oh) in order to provide the best experience for everyone.
Requirements for the solution were as follows:
- Needs to be as easy to set up as possible for less technical users
- Needs to be performant as we have quite a lot of different repositories and projects
Need for speed
After looking into a couple of different options I decided to go with the following setup:
- Install NFS server of on the Vagrant-powered virtual machine
- Expose directory containing all our projects to clients connecting to the VM
- Make it easy to connect to the shared directory
NFS seemed to fit our use case quite nicely - especially that any given time only one user will be accessing files in the VM and connection is made locally. That should give us good enough performance. Additionally, most of us use Mac OSX (10% use Linux) as our operating system of choice which has NFS support built in, so there was no worry about installing additional software.
One thing to note is that Vagrant can be configured to use NFS, but the way it’s set up didn’t fit our requirements and required additional configuration steps.
When the setup is done the shared directory is accessible via the following url:
nfs://192.168.33.10/home/vagrant/src and can be mounted easily using Finder’s
bultin “Connect to server” functionality.
Since these changes have been made our interns and designer are really happy with our current setup: It’s as easy as booting the development VM and simply using it.
By removing friction from the setup everyone stays productive and it makes it easy to collaborate because everyone’s development environment is set up in the same way.