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

Vagrant (3. deo)

Autor: Stefan Nožinić

U prošlom broju smo dali kratko uputstvo za instalaciju i osnovnu konfiguraciju Vagranta. Pomenuli smo neke njegove bitne osobine koje nam mogu pomoći. U ovom delu serijala ćemo razmatrati detaljnije te osobine, pokazati složeniju konfiguraciju i šta je sve moguće uraditi pri konfiguraciji.

U prošlom delu je bilo reči o automatskoj konfiguraciji Vagrant kutije i tu smo pomenuli različite pristupe. Da se podsetimo, automatska konfiguracija podrazumeva postinstalacioni postupak konfiguracije operativnog sistema. Neki od metoda su preko školjke (shell) i Ansibla (eng. Ansible).

Konfiguracija putem školjke podrazumeva pokretanje skripte koja će izvršiti konfiguraciju. Na primer, pretpostavimo da ste u svom Vagrantfile-u naveli kao operativni sistem Debijan. Vagrant će preuzeti Debijan, napraviti virtuelnu mašinu i pokrenuti Debijan. Nakon pokretanja Debijana, pokreće se sistem automatske konfiguracije. U našem slučaju pokreće se šel-skripta (shell) koju smo naveli u Vagrantfile-u. Ta skripta može da uradi sve što je potrebno za dodatnu konfiguraciju sistema kao što su preuzimanje nekih fajlova, kloniranje Git repozitorijuma, instalacija dodatnog softvera itd.

Skripte

Ako do sada niste imali iskustva sa alatima za automatsku konfiguraciju, preporučujemo vam da ih pogledate ili da koristite šel-skripte za automatsku konfiguraciju. Ako se odlučite za prvi predlog, predlažemo vam serijal o Ansiblu koji ide uporedo sa ovim serijalom. Ako se odlučite za drugu opciju, navodimo najjednostavniju upotrebu ovakvog sistema automatske konfiguracije.

U pitanju je sistem koji će prilikom prve vagrant up komande pokrenuti šel-skriptu. Lokaciju skripte podešavate u Vagrantovoj konfiguracionoj datoteci za trenutnu mašinu na sledeći način:

config.vm.provision "shell", path: "skripta.sh"

U skripti sada možete navesti komande koje će se izvršiti prilikom prvog pokretanja mašine.

Ako koristite skriptu koja se nalazi na internetu, možete u putanju (path) proslediti adresu gde se nalazi ta skripta.

Ansibl

Ansibl je kompleksniji pristup automatskoj konfiguraciji i preporučujemo njegovu upotrebu ako ste iskusan korisnik, ili ako imate želju da probate nešto novo i da naučite nešto zanimljivo.

Prilikom upotrebe Ansibla, Vagrantu je potrebno naglasiti da je reč o Ansiblovom sistemu konfiguracije i treba navesti putanju do plejbuka (playbook). Konfiguracija je prikazan sledećim primerom:

config.vm.provision "ansible" do |ansible| ansible.playbook = "playbook.yml"

Naravno, podrazumeva se da na host-mašini imate instaliran Ansibl. Preporučujemo serijal o Ansiblu ako ste zainteresovani za detalje o tome kako se on koristi i kako može biti koristan. Verujte nam, posle nekog vremena ćete shvatiti da su obične skripte previše „ružne” za neke kompleksnije stvari.

Pored ove dve stavke koje morate navesti, možete proslediti i neke dodatne informacije koje su vam potrebne. Recimo, možete proslediti dodatne promenljive. Primer:

ansible.extra_vars = { ntp_server: "pool.ntp.org", nginx: { port: 8008, workers: 4 } }

Ovo je naročito korisno ako želite da imate Ansiblovu konfiguraciju za više mašina koje se razlikuju samo po datim parametrima.

Pokretanje automatske konfiguracije

Nekad je potrebno da ponovimo konfiguraciju iako već imamo „konfigurisanu” (možda nepravilno) mašinu. U ovom slučaju imamo dve mogućnosti: da pokrenemo mašinu i da forsiramo konfiguraciju, ili da pokrenemo konfiguraciju kad je mašina već pokrenuta. Nema neke razlike između ova dva pristupa osim u tome da li je mašina već pokrenuta ili nije.

Ako želimo da pokrenemo mašinu i forsiramo konfiguraciju, pokrećemo:

vagrant up --provision

U drugom slučaju, kada nam je mašina već pokrenuta, pokrećemo komandu:

vagrant provision

Ako koristite običnu skriptu, Vagrant će pokrenuti skriptu ponovo i ona će se izvršiti kao da ste je pokrenuli normalno unutar mašine. Ako koristite Ansibl, on će detektovati šta treba da se menja a šta ne. Ovo znači da ako u Ansiblovoj konfiguraciji navedete instalaciju nekog paketa, Ansibl će prvo proveriti da li je paket prisutan na sistemu pa tek onda ga instalirati.

Za sledeći broj

U narednom delu ćemo pokazati primere kako da koristite promenljive u Vagrantovoj konfiguracionoj datoteci i kako da koristite stvari specifične za Rubi (Ruby).