Virtuella utvecklingsmiljöer

Share on FacebookShare on Google+Email this to someoneTweet about this on TwitterShare on LinkedIn

Detta inlägg är faktiskt varken Big Data eller NoSQL relaterat utan ett litet tips på hur man kan på ett enkelt sätt kan sätta upp olika test eller utvecklingsmiljöer.

I mitt arbetet ingår det en stor portion av att bygga demostrationer och olika testmiljöer, då jag behöver olika parallella installationer så funkar det dåligt att att ha allt lokalt. Jag har sedan länge använt mig av virtuella miljöer, initialt så var det VMWare Workstation men efter min period på Oracle så har jag börjat använda Oracle Virtual Box som har fördelen att det är gratis.

Men för mig som aldrig har varit eller tänker bli en linux expert, ja jag använder mest linux för mina miljöer, så får jag lägga mycket tid för enkla saker som att synka foldrar mellan min dator och den virtuella miljön eller bara det här med att installera en ny miljö.

När jag började på MarkLogic så fick jag tipset av en kollega att använda Vagrant. Nu är detta ingen ytterligare programvara för virtuella miljöer utan mera ett verktyg för att skapa och hantera dessa, både VMWare och VirtualBox. Man kan använda olika färdiga miljöer som finns uppladdade och anpassa dessa enkelt via en inställningsfil, tex tala om att det skall finnas en delad folder för att nämna en inställning.

Man hämtar en box, i detta exempel en CentOS 6.5, med

vagrant box init 
vagrant box add rafacas/oel65-plain

Första kommandot initierar en ny miljö och det andra hämtar hem en specifik box och lägger till den i miljön.

Sedan har man en fil som man kan göra sina inställningar i.

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

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # All Vagrant configuration is done here. The most common configuration
  # options are documented and commented below. For a complete reference,
  # please see the online documentation at vagrantup.com.
  config.vm.box = "ML7MEETUP"
  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "rafacas/oel65-plain"

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

  # 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 "./ml", "/home/vagrant/ml", :create => true

  # 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|
  #   # Don't boot with headless mode
     vb.gui = false
  #
  #   # Use VBoxManage to customize the VM. For example to change memory:
     vb.customize ["modifyvm", :id, "--memory", "6144"]
  end
end

Och när man vill starta boxen så kör man bara

vagrant up

Det finns bra dokumentation på Vagrant’s hemsida men jag googlade lite när jag började och fann denna utmärkta guide hos SVT, http://blogg.svt.se/testbild/2013/10/skapa-utvecklingsmiljoer-med-automagi/, som beskriver hur man kan gå tillväga. Den innehåller också lite mera avancerade delar som att automatiskt installera programvara vid första starten och så vidare.

/Mats Stellwall

Share on FacebookShare on Google+Email this to someoneTweet about this on TwitterShare on LinkedIn