Setup Development Environment with Vagrant on Google Compute Engine
We usually use Vagrant to provision and manage VirtualBox virtual machines or VMs. And Vagrant only ships with VirtualBox support by default. But Vagrant can do much more. VirtualBox is just one of providers, additional providers can be added via the Vagrant plugin system. Here, we are going to use Google Compute Engine as the provider and setup a disposable development environment.
Basic steps involve:
- Install Vagrant
- Install vagrant-google plugin
- Add SSH keys to metadata server
- Add Vagrant box
- Add a Vagrantfile and override the defaults from the box
- Provision the machine
First, install Vagrant (exampled by Debian systems such as Ubuntu):
Install dependencies for building Debian packages, which are needed for the plugin:
Install vagrant-google plugin:
In order to SSH into the VM, we need to add public key to the instance which will be provisioned. In Google Compute Engine, this is done via metadata server at the project level.
Add the username to prefix the SSH key, so the Compute Engine will pick it up and create the corresponding user:
Now the concatenated one will have the username:
Setting up SSH keys at the project level:
Google Cloud SDK or
gcloud command should be installed already. Now it’s time to configure the machine to be provisioned.
The plugin provides a Vagrant box, which is a package format for Vagrant environments. It is not necessary to create a new box, we can just override the defaults by the
Vagrantfile. So add the provider-specific box:
Make sure the box is added:
Vagrantfile and override the defaults: