субота, 20 априла, 2024
Како да...?

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

Аутор: Иван Радељић

Вагрант конфигурациона датотека и почетна тачка сваког Вагрант пројекта је основна. Њена синтакса је писана у Руби програмском језику и сада ћете видети колико може бити моћна употребом променљивих.

Подешавања виртуелне машине

ознака: config.vm

Подешавања са овом ознаком мењају конфигурацију машине којом Вагрант управља. Овој ознаци припада велик број променљивих које можемо користити. Овде бисмо навели само оне променљиве које смо користили приликом израде Вагрант бокса за Либератор пројекат. Па да почнемо:

  • config.vm.box

Овим подешавамо који бокс ће бити подигнут на машини. Вредност ове променљиве мора бити име инсталираног бокса или краће – име бокса на HashiCorp’s Atlas извору. У нашем примеру за Либератор имамо случај:

  config.vm.box = "debian"
  • config.vm.box_url

Веб-адреса на којој се налази конфигурисан бокс. Вредност ове променљиве може бити било која валидна веб-адреса или скраћено име бокса на HashiCorp’s Atlas-у. Такође се може користити и низ адреса, као и путања до локалне датотеке на диску. У нашем примеру имамо да је вредност ове променљиве веб-адреса.

  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

Овде имамо један сложенији случај где на основу вредности константе VAGRANT_ARCH одређујемо који ћемо бокс користити. У зависности од тога шта смо изабрали, то може бити бокс за x86 или x64 архитектуру процесора.

  • config.vm.network

Врши подешавање мрежа на машини. То може бити преусмеравање портова, конектовање на јавну мрежу или креирање приватне мреже. Ова променљива може бити позвана више пута и на тај начин можемо имати више мрежа које могу имати засебна подешавања. У нашем примеру имамо случај:

  liberator.vm.network :private_network, ip: "192.168.66.6"

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

  • config.vm.boot_timeout

Време у секундама које ће Вагрант чекати пре него што машина постане доступна. Код нас је то случај:

  config.vm.boot_timeout = 600
  • config.vm.provision

Ова поставка дефинише снабдеваче (енг. provisioners) на машини који ће аутоматски инсталирати и конфигурисати софтвер када машина буде креирана. Наравно, у Либератору је за снабдевача коришћен Ансибл

  liberator.vm.provision :ansible do |ansible|
      ansible.playbook = "provision/site.yml"
      ansible.host_key_checking = false
      ansible.groups = {
          "vagrant" => ["liberator"],
      }
  end

Као што смо већ поменули, Ансибл користи плејбук датотеке за конфигурацију Вагрант машине. Шта је заправо плејбук? Плејбук је ЈАМЛ (YAML) документ који обухвата неопходне кораке који ће се предузети на Вагрант машинама. За више сазнања испратите серијал текстова о Ансиблу у нашем часопису.

Подешавања за ССХ

ознака: config.ssh

Подешавања која носе ову ознаку односе се на конфигурисање како ће Вагрант приступати вашој машине преко ССХ протокола. Овде ћемо напоменути нека од најважнијих:

  • config.ssh.username

Корисничко име које ће Вагрант користити приликом ССХ приступа. Подразумевана вредност је „vagrant”.

  • config.ssh.password

Лозинка коју ће Вагрант користити приликом провере ССХ корисника. Треба напоменути да Вагрант препоручује да се користи аутентификација помоћу кључева.

  • config.ssh.host

ИП адреса или назив рачунара (енг. hostname) на који приступамо преко ССХ протокола.

  • config.ssh.port

Порт за ССХ протокол. Подразумевана вредност је 22.

  • config.ssh.guest_port

Порт на гостујућој машини на којој ССХ ради. Ово је корисно за неке провајдере да детектују преусмерене портове. На пример, ако ова променљива има подразумевану вредност 22 и ако Вагрант детектује да је порт 4567 на домаћину преусмерен на порт 22 на гостујућој машини, Вагрант ће покушати да користи порт 4567 како би комуницирао са гостујућом машином ако не постоји друга опција.

  • config.ssh.private_key_path

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

  • config.ssh.insert_key

Као што смо већ рекли, Вагрант аутоматски убацује несигурни пар кључева. Ако користите ваше приватне кључеве, онда има смисла подестити ову вредност као “false”.

Постоји још подешавања везаних за ССХ. Овде смо навели неке од најбитнијих. За остале погледајте званичну документацију.

Подешавања за Вагрант

ознака: config.vagrant

Ова подешавања се односе на сам Вагрант.

  • config.vagrant.host

Ова променљива подешава тип домаћина који „врти” Вагрант. Подразумевана вредност је :detect, што проузрокује да Вагрант аутоматски детектује домаћина. Вагранту је потребно да зна ову информацију да би могао да извршава неке задатке који су специфични за домаћина, као што су припремање НФС директоријума ако су омогућени. Ако Вагрант не успе да детектује домаћина, онда је потребно мануелно подесити ову вредност.

За крај

Надамо се да смо вам овим серијалом приближили Вагрант и начин на који функционише. Немојте да вас уплаше сва ова подешавања и мноштво променљивих којима Вагрант располаже. То је само доказ да је Вагрант веома моћан алат и да бенефит од њега има цео развојни тим. Наш савет је да кренете постепено са инсталацијом јавног бокса и са подразумеваним подешавањима. Касније по потреби или из радозналости можете мењати вредности променљивих и увидети како утичу на ваш пројекат. Због изузетне моћи скалирања Вагрант ће сигурно наћи примену у сваком пројекту.