You saw the recent demo and news about the new Vagrant provider from Skytap. Three new capabilities really set Skytap apart for developer productivity when used with Vagrant: the ability to securely VPN between the developer’s laptop and Skytap public cloud services, rapid syncing of the application stack through a NFS folder on the desktop, and the ease of sharing instant Vagrantfile-launched environments with a simple published URL.
We caught up with Skytap’s lead web back-end developer Nick Astete to talk about how we use Vagrant within Skytap to increase our own development efficiency, and how our own use of Vagrant led Skytap to deliver its own Vagrant provider for the benefit of developers and testers.
Skytap Blog: How has the use of Vagrant accelerated inside the developer community as a whole?
Nick: Vagrant has really taken stride in the last couple years. It was solving a real problem so it just skyrocketed in use.
The developer who uses Vagrant pretty quickly learns to interact with this virtual machine that Vagrant manages by just running standard Vagrant commands. They don’t need to worry about the multiplicity of IP addresses and credentials required to actually access the virtual machines they need.
It’s kind of a nice interface. Developers are really good at interacting with the file system and using the command line. One way to think about Vagrant is that it acts like a glue layer. It itself doesn’t have an opinion about how you run a command inside your virtual machine. Instead it says, “Well, people use Chef and Puppet and Ansible,” so instead it will just provide a unified interface to tie all the industry-standard tools together in an un-opinionated way.
Provisioners like Ansible are good for running stuff once a virtual machine exists, and VirtualBox is good for running the virtual machines, and your web browser is good for finding some big VM file and downloading it. Vagrant itself is just good at tying multiple activities together.
Skytap Blog: Does Vagrant take on new capabilities when used with Skytap?
The answer we found out pretty quickly is yes, absolutely. If you think about it, Skytap actually has some really nice, unique capabilities that I think work very well with Vagrant. I’d like to talk about those for a little bit.
The first one is our VPN capability. Typically how developers use Vagrant is that they have their source code checked out on their local machine, and then Vagrant creates and manages some VM, and then mounts that source code inside it. The developer keeps the source code on their actual machine and then they use whatever rich development environment, Eclipse, etc. As their local IDE writes changes to their source code, Vagrant, through using some lower-level technologies, will actually transfer changes over to the VM it manages.
Now, using the Skytap Vagrant provider with a Skytap account and VPN already set up, let’s say you are on your company network with access to your source code repository. Vagrant creates and remotely manages a Skytap environment. Because of the magic of Skytap VPNs, that VM in Skytap is actually able to have access to your source code and mount it in a way that’s very secure. No one else on the rest of the Internet can get into your corporate intranet and look at that source code, but you can get self-service access with a Skytap VPN.
That’s one point of harmony between Vagrant and Skytap. The other thing I would like to talk about is what Skytap environments are. Skytap customers can take a very complicated application that is hosted on-premises and very difficult to copy, and represent it in Skytap as an environment or a template. They get the benefits of cloud, like being able to create independent copies and like being able to share those very easily, without having to rewrite them from scratch, or retool them like you would need to do with other cloud providers.
You can move your existing environments into Skytap cloud services one time as a template and then other developers can create copies of that and then they can run their environments very quickly. They don’t need to rewrite their entire existing distributed application in terms of Chef or Ansible Provisioners; they can move forward with that later if they want to. They can allow Skytap, just using the Skytap UI and API, to do a lot of the heavy lifting of representing and capturing that distributed environment in a cloud.
We’re talking in real terms about a way to incrementally start changing your applications so that your environment is 100% the same every time, but you can start making changes to a distributed application at your leisure.
Skytap Blog: How did the requirement for the Vagrant provider come into Skytap and how did it proceed into part of our solution?
Nick: It was very organic. When we think about a lot of Skytap’s features, we’re looking around at the pain points that our customers have, we take feedback from our customers and then we decide, “Well, we should change the product or enhance the product in this particular way to solve some pain point that we’ve identified.”
The Vagrant provider came in a bottom-up way because the Skytap developers themselves realized that they were constrained in how many virtual machines they could run locally, and how big they could be. Skytap is really good at removing that constraint.
A while ago, before the provider was written, we were already using Vagrant; it was just using a default provider like VirtualBox. Because Vagrant is written in this abstract way, we realized it was really easy where we could just switch the provider to Skytap and we wouldn’t need to retool the way that Vagrant actually gets the machine up and running from scratch. We used an Ansible Provisioner in our Vagrant setup on the web, and like we didn’t have to change any part of that code, we didn’t have to change any of our Ansible playbooks. That stuff just works even though the provider is now Skytap.
It’s quite nice to be able to, as a web developer on Skytap, say, “Well, I was working on VirtualBox on Mac. I can run one or two virtual machines there, but I’ll just change the Vagrantfile. I’ll change the provider to Skytap and have it build me a development environment much larger than the capacity of my local system.”
You can’t do that sort of thing to your physical machine. There’s no file that you could change on your Mac that will give it 40 cores and 72 gigabytes of RAM or whatever. That’s really convenient, really powerful. That is where the infinite scalability of Skytap comes in.
Skytap Blog: The use of Vagrant is becoming quite common for developers, and there are other open-source providers out there. How is Skytap’s open-source provider for Vagrant unique?
Nick: I’ve done a cursory survey of the existing providers that are out there, and I feel pretty confident in saying that ours is the most sophisticated. We’ve spent a lot of actual engineering effort and engineering time on our provider.
Our provider benefits from some of Skytap’s specific features. One is the VPN functionality that I was mentioning. Also, Skytap has published URLs and published services, which are ways of securely poking some piece of your Skytap VM out to the open Internet so that people can actually interact with it.
You can type Vagrant commands like to expose the native Skytap functionality of published URLs, and it will just create one of those if it doesn’t exist and then print it to the console. If you want to share a specific VM with someone, you can create a published URL on the command line using Vagrant and then just email them the link, and then they can interact with the virtual machine using Skytap remote access.
Skytap Blog: What can the open source community take away from this process?
Nick: We’re very excited about the provider and one of the reasons that we’re open-sourcing it is that we think other Skytap users and customers will find it useful. We are happy to review and take any contributions that people have for making the provider better. We’ll continue to work on it ourselves, but if people have good ideas, we’re all ears.
Want to know how Vagrant and Skytap can accelerate development? Watch the Vagrant demo video, or you can check out the Vagrant provider environment in the demo library if you are a Skytap user. Not a user? No problem, take a Skytap Cloud tour today! Our documentation and introductory user training are open to all.