Installing a CentOS 7 box with Vagrant



Vagrant as you may know is one of the hottest tools in Devops for provisioning consistent development environments.

In this tutorial we will show how to provision a CentOS 7 box with Vagrant as well as the relevant support libraries for your development environment.


You will need to install the following on your local machine:

In this example I am using a Mac / OSx but you can find the relevant install instructions on their websites linked above.

On Mac you can also use Homebrew as follows:

brew cask install virtualbox

brew cask install vagrant

Provision a Box

Use vagrant’s command line tool to provision your box as follows:

vagrant init centos/7; vagrant up --provider virtualbox

This command will make the Centos 7 box resource available to your local vagrant and add a Vagrant file to your local directory. View the contents:

vi Vagrantfile

and you will see something like this:

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
 # The most common configuration options are documented and commented below.
 # For a complete reference, please see the online documentation at

 # Every Vagrant development environment requires a box. You can search for
 # boxes at = "centos/7"

 # Disable automatic box update checking. If you disable this, then
 # boxes will only be checked for updates when the user runs
 # `vagrant box outdated`. This is not recommended.
 # config.vm.box_check_update = false

 # Create a forwarded port mapping which allows access to a specific port
 # within the machine from a port on the host machine. In the example below,
 # accessing "localhost:8080" will access port 80 on the guest machine.
 # NOTE: This will enable public access to the opened port
 # "forwarded_port", guest: 80, host: 8080

 # Create a forwarded port mapping which allows access to a specific port
 # within the machine from a port on the host machine and only allow access
 # via to disable public access
 # "forwarded_port", guest: 80, host: 8080, host_ip: ""

 # Create a private network, which allows host-only access to the machine
 # using a specific IP.
 # "private_network", ip: ""

 # Create a public network, which generally matched to bridged network.
 # Bridged networks make the machine appear as another physical device on
 # your network.
 # "public_network"

 # Share an additional folder to the guest VM. The first argument is
 # the path on the host to the actual folder. The second argument is
 # the path on the guest to mount the folder. And the optional third
 # argument is a set of non-required options.
 # config.vm.synced_folder "../data", "/vagrant_data"

 # Provider-specific configuration so you can fine-tune various
 # backing providers for Vagrant. These expose provider-specific options.
 # Example for VirtualBox:
 # config.vm.provider "virtualbox" do |vb|
 # # Display the VirtualBox GUI when booting the machine
 # vb.gui = true
 # # Customize the amount of memory on the VM:
 # vb.memory = "1024"
 # end
 # View the documentation for the provider you are using for more
 # information on available options.

 # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
 # such as FTP and Heroku are also available. See the documentation at
 # for more information.
 # config.push.define "atlas" do |push|
 # end

 # 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

Connect with your new box using secure shell:

vagrant ssh

You should now be on the box andsee a vagrant command prompt as follows:

[vagrant@localhost ~]$

you are now ready to start having fun!