Documentation & Tutorials

Installing and Configuring Vagrant

Vagrant Overview

Vagrant is a tool for building and managing virtual machine environments in a single workflow.

The tool provides a portable, reproducible and easy to configure work environments built on top of industry-standard technology. Machines are provisioned on top of VirtualBox, VMware, Scaleway, or any other provider.


Downloading and Installing Vagrant

This tutorial supposes that you have already installed one of supported virtual providers, like VirtualBox or Docker.

1 . Download the latest version of Vagrant for your operating system.

2 . Launch the installation tool and follow the steps to install it on your local computer.

3 . Verify that the installation has completed successfully by launching the command vagrant -v:

$ vagrant -v
Vagrant 2.2.0

Deploying a Vagrant Box

Prepacked templates of virtual machines are called Boxes in Vagrant. You can find a full list of all public boxes on the box search page.

Important Vagrant Boxes are build for certain hypervizors and may not be universally compatible. Check the box search page to verify, if the Box is compatible with your hypervizor. Alternatively you may use Bento Boxes, these boxes are open source and built for a number of providers including VMware, Virtualbox, and Parallels. There are a variety of operating systems and versions available.

1 . Create a new directory for your Vagrant project and enter it:

mkdir -p vagrant-projects/ubuntu-vm
cd vagrant-projects/ubuntu-vm

2 . Initialize a new Vagrant environment inside the projects directory with the command vargrant init <boxpath>, whereis the name of the Vargarant Box:

vagrant init bento/ubuntu-18.04

3 . Start the new virtual machine:

vagrant up

Runnig the vagrant up command creates, configures and starts a virtual machine as described in your Vagrantfile.

During the first run the tool downloads automatically the required Vagrant box from the box repository and performs provisioning of the machine.

4 . Log into your box by using SSH:

vagrant ssh default

You can now run any tasks on your virtual machine and develop your application.

Once you have finished your work on the virtual machine, you have several options to stop or to destroy it if you do not need it any longer.

5 . To stop the virtual machine, type:

vagrant halt

6 . To hibernate the machine, type:

vagrant suspend

7 . If you want to delete your VM, type:

vagrant destroy

To recreate a VM from the configuration in your Vagrantfile simply type:

vagrant up

Working with the Vagrantfile

You can modify the Vagrantfile to customize the provision of virtual machines towards your needs.

To update your default Ubuntu to the latest version and to install the Apache web server automatically, uncomment the following lines as following in your Vagrantfile and save it:

# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell", inline: <<-SHELL
 apt-get update
 apt-get install -y apache2

Now you can recreate your VM with and follow the update of the system as well as the installation of Apache:

vagrant up

Provisioning Scaleway Instances with Vagrant

You can use a plugin that allows you to provide Scaleway Instances directly from your Vagrantfile.

1 . Create a new folder for your project:

mkdir vagrant-scaleway

2 . Install the plugin with Vagrant:

vagrant plugin install vagrant-scaleway

3 . Create a Vagrantfile that is looking like the following example:

Vagrant.configure('2') do |config|
  config.vm.provider :scaleway do |scaleway, override|
    config.vm.synced_folder '.', '/vagrant', disabled: true
    scaleway.organization = 'YOUR_ORGANIZATION_UUID'
    scaleway.token = 'YOUR_TOKEN' = 'YOUR_SERVER_NAME'
    scaleway.commercial_type = 'START1-S'
    scaleway.region = 'PAR1'
    scaleway.image = 'IMAGE_ID'

    override.ssh.private_key_path = '~/.ssh/id_rsa'

You may check this RubyDoc for all configuration options.

4 . Once you have finished the work on your Vagrantfile, you can deploy the instance by typing:

vagrant up

You will see an output like the following:

Bringing machine 'default' up with 'scaleway' provider...
==> default: Creating a server with the following settings...
==> default:  -- Commercial Type: START1-S
==> default:  -- Image: db52018e-b3c0-4676-94a0-c40ba3f4a282
==> default:  -- Name: scw-vagrant-server
==> default: Starting the server...
==> default: Waiting for server to become "ready"...
==> default: Waiting for SSH to become available...
==> default: Machine is booted and ready for use!

5 . You can now log into your server:

vagrant ssh

And you will see an output like the following, meaning that you are connected to your Scaleway instance now:

 ___  ___ __ _| | _____      ____ _ _   _
/ __|/ __/ _` | |/ _ \ \ /\ / / _` | | | |
\__ \ (_| (_| | |  __/\ V  V / (_| | |_| |
|___/\___\__,_|_|\___| \_/\_/ \__,_|\__, |

Welcome on Ubuntu Bionic Beaver (18.04 LTS) (GNU/Linux 4.9.93-mainline-rev1 x86_64 )

System information as of: Thu Nov  8 11:05:14 UTC 2018

System load:	0.02		Int IP Address:
Memory usage:	0.0%		Pub IP Address:
Usage on /:	4%		Swap usage:	0.0%
Local Users:	0		Processes:	103
Image build:	2018-07-03	System uptime:	1:02 hours
Disk vda:	l_ssd 50G

For more information how to manage your virtual machines with Vagrant, you may check out the official documentation.

Discover a New Cloud Experience

Deploy SSD Cloud Servers in seconds.