Že pred meseci sem naletel na Vagrant, mu pa nisem posvetil nobene pozornosti. Tako pa je pred dnevi prišla ideja, da bi uporabil Puppet ali Chef za hitro namestitev testnih okolij OpenStack, Cloudstacka oz. karkoli podobnega v virtualizacijo, kot je VirtualBox ali VMWare Fusion na mojem desktop računalniku. In tako sem znova naletel na Vagrant. Ampak kaj Vagrant je?
Vagrant je orodje za hitro ustvarjanje navideznih računalnikov (virtual machines), ki so namenjeni razvojnim okoljem. Torej laično povedano, z njim 1 2 3 naredimo virtualca, ki je povsem izoliran od našega delovnega okolja, in teče v VirtualBoxu ali VMWare Fusion. Z enim samim ukazom odstranimo celotno razvojno okolje in kakršno koli sled o njegovem obstoju, brez da bi lahko kakorkoli škodovali našemu produkcijskemu sistemu (lasten notebook).
POZOR: Vagrant je CLI orodje (toda to vas naj ne odvrne od uporabe)
Sama namestitev je sila enostavna. S spletne strani
VagrantUp snamemo paket za operacijski sistem po izbiri in ga namestimo. Prepričajmo se, da imamo nameščen VirtualBox in iz konzole izvedimo ukaz:
vagrant init hashicorp/precise32
in
vagrant up
Tako sprožimo download zgoraj imenovane Ubuntu distribucije in namestitev v VirtualBox. Ko se namestitev konča, se lahko potem SSH priključimo na 127.0.0.1 (localhosta) na port 2222 in smo že v našem virtualnem sistemu. V sistem se lahko priklopimo tudi z ukazom vagrant ssh. Takoj po izvedbi prvega ukaza, se nam v imeniku, kjer se nahajamo zapiše datoteka Vagrantfile, kjer so zapisane postavke sistema, ki se namesti z ukazom vagrant up. V kolikor želimo VM ukinit izvedemo ukaz vagrant destroy oz. jih lahko zlistamo z ukazom vagrant box list in odstranimo v popolnosti iz sistema z ukazom vagrant box remove <ime_instance>.
Toda preden začnemo je potrebno pojasniti še par terminov, ki se pri Vagrantu uporabljajo. To so box, provider, provisoner in Vagrantfile.
Box – je paket, ki vsebuje VM z točno določenim OS.
Provider – je programska oprema, ki je odgovorna za kreiranje in managiranje VM. V našem primeru je to OpenSource VirtualBox, lahko pa uporabimo še VMWare Fusion, za katerega potrebujemo plugin, ki pa stane cca. 80 US$.
Provisoner – je odgovoren za ponudbo VM, ki mu jo je ponudil prej omenjen provider. Provisoner se uporablja za namestitev VM, instalacijo potrebne programske opreme v VM in za izvedbo različnih opravil. Največkrat uporabljani Prosvisonerji so Puppet, Chef in Ansible ter seveda shell skripte.
Vagrantfile – je celotna specifikacija shranjena v eni datoteki. Datoteka je shranjena v našem domačem imeniku. Primer Vagrantfile datoteke je podobne temu:
Vagrant.configure(“2”) do |config| config.vm.box = “chef/freebsd-9.2” config.vm.box_url = “http://mojserver/freebsd-9.2” config.vm.network :private_network, ip: “192.168.33.101” config.vm.synced_folder “./”, “/vagrant”end
in potem nam sama izvedba ukaza vagrant up izvede tole:
Bringing machine ‘default’ up with ‘virtualbox’ provider…
==> default: Importing base box ‘chef/freebsd-9.2’…
==> default: Matching MAC address for NAT networking…
==> default: Checking if box ‘chef/freebsd-9.2’ is up to date…
==> default: Setting the name of the VM: davorg_default_1403595117314_48185
==> default: Couldn’t find Cheffile at ./Cheffile.
==> default: Clearing any previously set network interfaces…
==> default: Preparing network interfaces based on configuration…
default: Adapter 1: nat
==> default: Forwarding ports…
default: 22 => 2222 (adapter 1)
==> default: Booting VM…
==> default: Waiting for machine to boot. This may take a few minutes…
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
V kolikor vas je zadeva navdušila imate za začetek dovolj. Na spletu je precej dokumentacije glede Vagranta, jaz ga uporabljam na OpenSuse 13.1 z VirtualBox in na OS X Maverick z VirtualBox. Na obeh sistemih deluje odlično, na Windows OS ga še nisem testiral, ker jih nimam.
Na spletu je prav tako ogromno strani, ki nam ponujajo že izdelane Boxe, svetujem vam da si ogledate stran Vagrantbox.es – http://www.vagrantbox.es, kjer je kreiranih Boxov ogromno.