Vagrant (4. deo)
Autor: Ivan Radeljić
Vagrant konfiguraciona datoteka i početna tačka svakog Vagrant projekta je osnovna. Njena sintaksa je pisana u Rubi programskom jeziku i sada ćete videti koliko može biti moćna upotrebom promenljivih.
Podešavanja virtuelne mašine
oznaka: config.vm
Podešavanja sa ovom oznakom menjaju konfiguraciju mašine kojom Vagrant upravlja. Ovoj oznaci pripada velik broj promenljivih koje možemo koristiti. Ovde bismo naveli samo one promenljive koje smo koristili prilikom izrade Vagrant boksa za Liberator projekat. Pa da počnemo:
config.vm.box
Ovim podešavamo koji boks će biti podignut na mašini. Vrednost ove promenljive mora biti ime instaliranog boksa ili kraće – ime boksa na HashiCorp’s Atlas izvoru. U našem primeru za Liberator imamo slučaj:
config.vm.box = "debian"
- config.vm.box_url
Veb-adresa na kojoj se nalazi konfigurisan boks. Vrednost ove promenljive može biti bilo koja validna veb-adresa ili skraćeno ime boksa na HashiCorp’s Atlas-u. Takođe se može koristiti i niz adresa, kao i putanja do lokalne datoteke na disku. U našem primeru imamo da je vrednost ove promenljive veb-adresa.
if VAGRANT_ARCH == "x64" liberator.vm.box_url = "https://ftp.lugons.org/vagrant/debian-7.6.0-x86_64.box" else liberator.vm.box_url = "https://dl.dropboxusercontent.com/s/60pv9an852jx9y0/Debian-7.3.0-i386b.box?dl=1" end
Ovde imamo jedan složeniji slučaj gde na osnovu vrednosti konstante VAGRANT_ARCH određujemo koji ćemo boks koristiti. U zavisnosti od toga šta smo izabrali, to može biti boks za x86 ili x64 arhitekturu procesora.
config.vm.network
Vrši podešavanje mreža na mašini. To može biti preusmeravanje portova, konektovanje na javnu mrežu ili kreiranje privatne mreže. Ova promenljiva može biti pozvana više puta i na taj način možemo imati više mreža koje mogu imati zasebna podešavanja. U našem primeru imamo slučaj:
liberator.vm.network :private_network, ip: "192.168.66.6"
Ovim smo definisali statičku IP adresu za našu mašinu. Bitno je da se IP adresa ne podudara sa IP adresom neke druge mašine u mreži i da bude iz reda rezervisanih privatnih adresa koje nisu javno dostupne.
config.vm.boot_timeout
Vreme u sekundama koje će Vagrant čekati pre nego što mašina postane dostupna. Kod nas je to slučaj:
config.vm.boot_timeout = 600
config.vm.provision
Ova postavka definiše snabdevače (eng. provisioners) na mašini koji će automatski instalirati i konfigurisati softver kada mašina bude kreirana. Naravno, u Liberatoru je za snabdevača korišćen Ansibl
liberator.vm.provision :ansible do |ansible| ansible.playbook = "provision/site.yml" ansible.host_key_checking = false ansible.groups = { "vagrant" => ["liberator"], } end
Kao što smo već pomenuli, Ansibl koristi plejbuk datoteke za konfiguraciju Vagrant mašine. Šta je zapravo plejbuk? Plejbuk je JAML (YAML) dokument koji obuhvata neophodne korake koji će se preduzeti na Vagrant mašinama. Za više saznanja ispratite serijal tekstova o Ansiblu u našem časopisu.
Podešavanja za SSH
oznaka: config.ssh
Podešavanja koja nose ovu oznaku odnose se na konfigurisanje kako će Vagrant pristupati vašoj mašine preko SSH protokola. Ovde ćemo napomenuti neka od najvažnijih:
config.ssh.username
Korisničko ime koje će Vagrant koristiti prilikom SSH pristupa. Podrazumevana vrednost je „vagrant”.
config.ssh.password
Lozinka koju će Vagrant koristiti prilikom provere SSH korisnika. Treba napomenuti da Vagrant preporučuje da se koristi autentifikacija pomoću ključeva.
config.ssh.host
IP adresa ili naziv računara (eng. hostname) na koji pristupamo preko SSH protokola.
config.ssh.port
Port za SSH protokol. Podrazumevana vrednost je 22.
config.ssh.guest_port
Port na gostujućoj mašini na kojoj SSH radi. Ovo je korisno za neke provajdere da detektuju preusmerene portove. Na primer, ako ova promenljiva ima podrazumevanu vrednost 22 i ako Vagrant detektuje da je port 4567 na domaćinu preusmeren na port 22 na gostujućoj mašini, Vagrant će pokušati da koristi port 4567 kako bi komunicirao sa gostujućom mašinom ako ne postoji druga opcija.
config.ssh.private_key_path
Putanja do privatnog ključa koji se koristi za pristup gostujućoj mašini preko SSH protokola. Obično je ovo nesiguran ključ koji dolazi zajedno sa Vagrantom, pošto njega koriste svi javni boksovi. Ako napravite svoj boks sa svojim ključem, onda treba da podesite da vrednost ove promenljive pokazuje do tog ključa. Vrednost ove promenljiva može biti i niz koji će pokazivati na više ključeva.
config.ssh.insert_key
Kao što smo već rekli, Vagrant automatski ubacuje nesigurni par ključeva. Ako koristite vaše privatne ključeve, onda ima smisla podestiti ovu vrednost kao “false”.
Postoji još podešavanja vezanih za SSH. Ovde smo naveli neke od najbitnijih. Za ostale pogledajte zvaničnu dokumentaciju.
Podešavanja za Vagrant
oznaka: config.vagrant
Ova podešavanja se odnose na sam Vagrant.
config.vagrant.host
Ova promenljiva podešava tip domaćina koji „vrti” Vagrant. Podrazumevana vrednost je :detect, što prouzrokuje da Vagrant automatski detektuje domaćina. Vagrantu je potrebno da zna ovu informaciju da bi mogao da izvršava neke zadatke koji su specifični za domaćina, kao što su pripremanje NFS direktorijuma ako su omogućeni. Ako Vagrant ne uspe da detektuje domaćina, onda je potrebno manuelno podesiti ovu vrednost.
Za kraj
Nadamo se da smo vam ovim serijalom približili Vagrant i način na koji funkcioniše. Nemojte da vas uplaše sva ova podešavanja i mnoštvo promenljivih kojima Vagrant raspolaže. To je samo dokaz da je Vagrant veoma moćan alat i da benefit od njega ima ceo razvojni tim. Naš savet je da krenete postepeno sa instalacijom javnog boksa i sa podrazumevanim podešavanjima. Kasnije po potrebi ili iz radoznalosti možete menjati vrednosti promenljivih i uvideti kako utiču na vaš projekat. Zbog izuzetne moći skaliranja Vagrant će sigurno naći primenu u svakom projektu.