petak, 19 aprila, 2024
Kako da...?

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.