четвртак, 25 априла, 2024
Како да...?

Вагрант (3. део)

Аутор: Стефан Ножинић

У прошлом броју смо дали кратко упутство за инсталацију и основну конфигурацију Вагранта. Поменули смо неке његове битне особине које нам могу помоћи. У овом делу серијала ћемо разматрати детаљније те особине, показати сложенију конфигурацију и шта је све могуће урадити при конфигурацији.

У прошлом делу је било речи о аутоматској конфигурацији Вагрант кутије и ту смо поменули различите приступе. Да се подсетимо, аутоматска конфигурација подразумева постинсталациони поступак конфигурације оперативног система. Неки од метода су преко шкољке (shell) и Ансибла (енг. Ansible).

Конфигурација путем шкољке подразумева покретање скрипте која ће извршити конфигурацију. На пример, претпоставимо да сте у свом Vagrantfile-у навели као оперативни систем Дебијан. Вагрант ће преузети Дебијан, направити виртуелну машину и покренути Дебијан. Након покретања Дебијана, покреће се систем аутоматске конфигурације. У нашем случају покреће се шел-скрипта (shell) коју смо навели у Vagrantfile-у. Та скрипта може да уради све што је потребно за додатну конфигурацију система као што су преузимање неких фајлова, клонирање Гит репозиторијума, инсталација додатног софтвера итд.

Скрипте

Ако до сада нисте имали искуства са алатима за аутоматску конфигурацију, препоручујемо вам да их погледате или да користите шел-скрипте за аутоматску конфигурацију. Ако се одлучите за први предлог, предлажемо вам серијал о Ансиблу који иде упоредо са овим серијалом. Ако се одлучите за другу опцију, наводимо најједноставнију употребу оваквог система аутоматске конфигурације.

У питању је систем који ће приликом прве vagrant up команде покренути шел-скрипту. Локацију скрипте подешавате у Вагрантовој конфигурационој датотеци за тренутну машину на следећи начин:

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

У скрипти сада можете навести команде које ће се извршити приликом првог покретања машине.

Ако користите скрипту која се налази на интернету, можете у путању (path) проследити адресу где се налази та скрипта.

Ансибл

Ансибл је комплекснији приступ аутоматској конфигурацији и препоручујемо његову употребу ако сте искусан корисник, или ако имате жељу да пробате нешто ново и да научите нешто занимљиво.

Приликом употребе Ансибла, Вагранту је потребно нагласити да је реч о Ансибловом систему конфигурације и треба навести путању до плејбука (playbook). Конфигурација је приказан следећим примером:

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

Наравно, подразумева се да на хост-машини имате инсталиран Ансибл. Препоручујемо серијал о Ансиблу ако сте заинтересовани за детаље о томе како се он користи и како може бити користан. Верујте нам, после неког времена ћете схватити да су обичне скрипте превише „ружне” за неке комплексније ствари.

Поред ове две ставке које морате навести, можете проследити и неке додатне информације које су вам потребне. Рецимо, можете проследити додатне променљиве. Пример:

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

Ово је нарочито корисно ако желите да имате Ансиблову конфигурацију за више машина које се разликују само по датим параметрима.

Покретање аутоматске конфигурације

Некад је потребно да поновимо конфигурацију иако већ имамо „конфигурисану” (можда неправилно) машину. У овом случају имамо две могућности: да покренемо машину и да форсирамо конфигурацију, или да покренемо конфигурацију кад је машина већ покренута. Нема неке разлике између ова два приступа осим у томе да ли је машина већ покренута или није.

Ако желимо да покренемо машину и форсирамо конфигурацију, покрећемо:

vagrant up --provision

У другом случају, када нам је машина већ покренута, покрећемо команду:

vagrant provision

Ако користите обичну скрипту, Вагрант ће покренути скрипту поново и она ће се извршити као да сте је покренули нормално унутар машине. Ако користите Ансибл, он ће детектовати шта треба да се мења а шта не. Ово значи да ако у Ансибловој конфигурацији наведете инсталацију неког пакета, Ансибл ће прво проверити да ли је пакет присутан на систему па тек онда га инсталирати.

За следећи број

У наредном делу ћемо показати примере како да користите променљиве у Вагрантовој конфигурационој датотеци и како да користите ствари специфичне за Руби (Ruby).