Vagrant

Vagrant (van HashiCorp) is een ‘tool’ om virtuele omgevingen te bouwen. Er worden nagenoeg alle virtualizatie-platforms ondersteund, de populairste zijn VirtualBox, VMware, Hyper-V en KVM. Vagrant wordt geïnstalleerd met behulp van een package, afhankelijk van het OS dat gebruikt wordt. Hier vind je de downloads.

Een Vagrant virtuele machine wordt ‘gebouwd’ via een script-bestand met de naam Vagrantfile. Het OS waarmee een VM gaat werken wordt ingesteld met behulp van een image. Deze image wordt een box genoemd en bv. voor CentOS versie 7 kun je deze installeren met:

vagrant box add centos/7

Publiekelijk beschikbare boxes kunnen hier gevonden worden: https://app.vagrantup.com/boxes/search Een box kan door meerdere Vagrant VM’s gebruikt worden. Om een CentOS VM te bouwen met Vagrant, gebruik je het commando:

vagrant init

Dit maakt een Vagrantfile voor je aan en deze kun je vervolgens aanpassen:

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
end

Tevens kan in dit bestand ook een verwijzing naar een provisioning tool (zoals Puppet of Ansible) gemaakt worden waarmee ook de benodigde software in de VM wordt geïnstalleerd.


Een voorbeeld om een VM te maken in VirtualBox en hierop dan via een Ansible script Tomcat te installeren:

# -*- mode: ruby -*-
# vi: set ft=ruby :
#
# Required modules
require 'yaml' # for reading yaml files
Vagrant.require_version ">= 2.0.0"
gui = false
host = 'tomcat'
vcpu = '2'
vmemory = '2048'
Vagrant.configure(2) do |config|
  config.vm.box = 'centos/7'
  config.vm.define host do |machine|
    machine.vm.hostname = host + '.digitalinfo.local'
    machine.vm.network "private_network", ip:"172.17.177.21"
    machine.vm.provider "virtualbox" do |virtualbox|
      virtualbox.gui = gui
      virtualbox.memory = vmemory
      virtualbox.cpus = vcpu
    end
  end
  config.vm.provision "ansible" do |ansible|
    ansible.verbose ="v"
    ansible.playbook = "tomcat.yml"
  end
end

Hiermee wordt de VM voorzien van CentOS 7, de hostnaam wordt bepaald, evenals het IP adres van de VM. Als laatste wordt het tomcat.yml script met Ansible uitgevoerd. De hostname, het geheugen en aantal processoren stellen we in via variabelen.

Om het hele proces te starten wordt het volgende commando gebruikt:

vagrant up

Tijd om koffie te halen… tegen de tijd dat je die op hebt is er een TomCat server geïnstalleerd! (snel drinken)

Meer informatie over Vagrant vind je hier