Vagrant
Vagrant je alat za izgradnju kompletnog razvojnog okruženja. Jednostavnim načinom za korišćenje i fokusom na automatizaciju, Vagrant sam po sebi smanjuje vreme za podešavanje radnog okruženja, pritom povećavajući razvoj/proizvodnju.
Vagrant je pokrenut u januaru 2010. godine od strane Mitchell Hashimoto-a. Naredne tri godine Vagrant je bio projekat na kome je Hashimoto radio u slobodno vreme. Tokom ovog perioda, Vagrant je stekao poverenje mnogih korisnika i počeo je da ga koristiti veliki broj pojedinaca kao i čitavih razvojnih timova velikih kompanija. Novembra 2012. godine, Hashimoto je osnovao HashiCorp kako bi posvetio više vremena razvoju Vagranta. Danas, HashiCorp razvija komercijalne dodatke i pruža stručnu podršku i obuku za Vagrant. Vagrant jeste, i uvek će biti slobodno licencirani open source projekat. Svako izdanje Vagranta je rad i doprinos više stotina pojedinaca u okviru projekta otvorenog koda.
Sadržaj
Vagrant paketi
Vagrant paketi ili kutije (engl. Box) su formati koji služe za Vagrant okruženje. Paket može koristiti bilo ko na bilo kojoj platformi koja podržava Vagrant kako bi se stvorilo identično radno okruženje. Vagrant kutija pruža svu funkcionalnost za upravljanje istom. Jedan od najlakših načina da se doda Vagrant kutija je iz javno dostupnih kataloga. Takođe, i sam korisnik sistema može da doda i podeli svoju Vagrant kutiju na javnom sajtu za Vagrant kutije. Vagrant paketi takođe podržavaju verzionisanje, tako da članovi vašeg tima koji koriste Vagrant mogu lako da ažuriraju osnovni paket, dok ljudi koji su kreirali kutije mogu efikasno da ispravljaju greške i lako komuniciraju sa ostalim članovima. Gde se tačno mogu naći paketi, tačnije kutije, i kako se koriste biće definisano u daljem tekstu.
Priprema radnog okruženja
Za korišćenje Vagrant alata neophodno je instalirati virtuelnu mašinu i alata Vagrant.
Instalacija virtuelne mašine
Pre samog početka rada, neophodna je instalacija virtuelne mašine. VirtualBox je softver otvorenog koda koji služi za virtuelizaciju operativnih sistema. Može se koristiti Oracle VirtualBox koji se preuzima sa sledećeg sajta: https://www.virtualbox.org/. Biramo na kojoj platformi želimo da radimo, u našem slučaju to je Windows i potom pokrenćemo instalaciju. Pri pokretanju instalacije otvoriće se prozor prikazan kao na slici ispod.
Sledeći koraci za instalaciju su vrlo jednostavni. Na kraju se prikazuje prozor kao na slici ispod.
Nakon klika na dugme Finish instalacija virtuelne mašine je gotova, i može se preći na sledeći korak.
Instalacija Vagranta
Vagrant je softver koji kreira i konfiguriše virtuelnu mašinu. Predstavlja omotač oko VirtualBox-a i omogućava bržu i lakšu konfiguraciju virtuelne mašine. Vagranta se može preuzeti sa sledećeg linka: https://www.vagrantup.com/downloads.html. Potrebno je izabrati na kojoj platformi želimo da radimo i skinuti odgovarajuću instalaciju. U našem slučaju isto kao i za virtuelnu mašinu to je Windows. Koraci za instalaciju su jednostavni kao i kod virtuelne mašine, pa prilikom završetka instalacije Vagranta, možemo početi sa korišćenjem ovog vrlo korisnog alata.
Podešavanje Vagranta
Na samom početku rada sa alatom Vagrant, potrebno je dodati kutiju sa kojom želimo da radimo. Kutija se može preuzeti sa javnog kataloga https://atlas.hashicorp.com/boxes/search. Nije neophodno preuzeti kutiju direktno sa sajta, već se to može izvršiti jednostavnom komandom vagrant box add naziv_kutije
. Uzmimo za primer da to želimo da bude kutija hashicorp/precise64 ubuntu
. Dodavanje kutije vrši se komandom:
>vagrant box add hashicorp/precise64
Po pokretanju komande, sam alat će preuzeti željenu kutiju i dodati je kod sebe. Nakon dodavanja kutije potrebno je izabrati koji ćemo direktorijum koristiti za rad. Nakon toga, potrebno je startovati Command Prompt na Windows-u i pozicionirati se na željeni folder komandom cd putanja
, posle čega treba da „kažemo“ Vagrantu da ćemo tu raditi sledećom komandom:
>vagrant init
Posle pokretanja komande u folderu koji smo izabrali naći će se naš Vagrantfile u kome definišemo koju ili koje kutije koristimo, šta želimo da radimo, itd.
Pokretanje Vagranta
Pod pretpostavkom da smo uspešno izvršili instalaciju, dodali željene kutije, konfigurisali Vagrantfile, sve što nam preostaje je da vrlo jednostavnom komandom iz Command Prompt-a iz foldera gde se nalazi Vagrantfile pokrenemo instance virtuelne mašine. Komanda je:
>vagrant up
Nakon pokretanja komande, potrebno je sačekati odredjeno vreme dok se konfiguracija izvrši i podigne virtuelna mašina. Ukoliko nismo izabrali, u Vagrantfile konfiguraciji, da imamo vizuelni prikaz virtuelne mašine možemo joj pristupiti komandom:
>vagrant ssh
Vagrant kao web server za dokuwiki
Pretpostavimo da smo instalirali VirtualBox i Vagrant korektno, kao i da smo napravili inicijalizaciju Vagrantfile-a u željenom direktorijumu i dodali kutije za Vagrant.
Pre svega, treba da konfigurišemo koju kutiju koristimo, kao i koji username i password koristimo za ssh pristup instance virtuelne mašine. Podešavanje Vagrantfile možemo videti u sledećem kodu:
Podešavanje kutije:
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/trusty64" config.ssh.username = "vagrant" config.ssh.password = "vagrant"
Nakon što smo rekli Vagrantu koju kutiju će koristiti, koji ssh username i password treba da koristi, sledeći koraci su podešavanje portova koje treba da koristi, zatim koliko memorije i procesora mu dajemo za rad, kao i to da li koristi neke propratne skripte za rad.
Podešavanje portova:
config.vm.network "forwarded_port", guest: 80, host: 8080 #database config.vm.network "forwarded_port", guest: 3306, host: 3306
U prethodnom kodu možemo videti da će se umesto zahteva 80 koristiti zahtev hosta 8080, kao i da smo prepisali da se port 3306 koristi isti, za bazu podataka.
Podešavanje VirtualBox-a:
config.vm.provider "virtualbox" do |vb| vb.memory = "1024" vb.cpus = 1 end
Pri podešavanju VirtualBox-a dali smo mu 1GB radne memorije, kao u mogućnost rada na samo jednom procesoru.
Povezivanje skripte:
config.vm.provision "shell", path: "script.sh"
Konfigurisanjem takozvanog snabdevanja i odabirom jezika shell, šaljemo putanju do skripte koja će se pokrenuti pri startovanju instance virtuelne mašine.
Skripta script.sh ima sledeći izgled:
#!/bin/bash sudo apt-get -y update sudo apt-get -y install apache2 sudo debconf-set-selections <<< 'mysql-server-5.5 mysql-server/root_password password Passw0rd' sudo debconf-set-selections <<< 'mysql-server-5.5 mysql-server/root_password_again password Passw0rd' sudo apt-get -y install mysql-server libapache2-mod-auth-mysql php5-mysql sudo apt-get -y install php5 libapache2-mod-php5 php5-mcrypt wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz tar xvf dokuwiki-stable.tgz mv dokuwiki-*/ /var/www/html/dokuwiki chown www-data:www-data -R /var/www/html/dokuwiki
Pre svega, vrši se nadogradnja sistema, tačnije kutije koju koristimo, ukoliko takva postoji. Nakon toga za potrebe web server instaliramo apache2 kao i mysql server. Potom instaliramo i php5. Da bismo prikazali uspešnu instalaciju preuzimamo besplatni dokuwiki, i kopiramo sadržaj istog na odgovarajuću lokaciju. Pošto je instance virtuelne mašine pokrenuta, odlaskom sa lokalne mašine na http://localhost:8080/dokuwiki/ ili na http://127.0.0.1:8080/dokuwiki/doku.php, prikazaće nam se dokuwiki strane kao na sledećoj slici.
Ako stranica liči na prethodnu sliku onda su instalacija i sva podešavanja uspešna izvršena i jednostavnom komandom vagrant up
startujemo web server za uređivanje dokuwiki strana.
Zaključak
Vagrant je jako koristan alat koji koristimo kao omotač za virtuelne mašine. Visoku primenu našao je zahvaljujuci jednostavnim komandama za startovanje instance virtuelnih mašina koje su danas sve više u upotrebi, koriste ga mnogi timovi za razvoj softvera jer je jednostavan za dorašivanje i komunikaciju u timu.
Korisni linkovi
- https://www.virtualbox.org/
- https://www.vagrantup.com/
- http://stackoverflow.com/questions/24620599/error-vt-x-not-available-for-vagrant-machine-inside-virtualbox
- http://stackoverflow.com/questions/7739645/install-mysql-on-ubuntu-without-password-prompt
- https://help.ubuntu.com/community/MpichCluster