Vagrant - ustawienie środowiska developerskiego

Konfiguracja Vagranta jest bardzo prosta i opiera się o 2 pliki konfiguracyjne.

Vagrantfile

Cheffile

Pierwszy, Vagrantfile, określa konfigurację maszyny wirtualnej na której będziemy pracować. W naszym przypadku podstawowymi informacjami to box (i link z którego maszyna wirtualna będzie pobrana). Jest to ubuntu 12.04 (głównie ze względu na to że nasz Vagrantfile został wygenerowany przez Rove). Podstawowymi konfiguracjami w naszym przypadku są:

  • Przekierowanie portu 3000 na hosta - jest to podstawowy port dla serwera railsów
  • Ustawienia poszczególnych konfiguracji dla Chefa (o którym napiszę poniżej) dotyczących naszych zależności projektowych. Są to: git, mongodb oraz redis, a także podstawowa instalacja rvm (za pomocą której później ustawimy nasze środowisko do pracy)

Cheffile jest to plik mówiący gemowi librarian-chef jakie zależności chcemy mieć zainstalowane na naszej maszynie wirtualnej. Krótkie informacje o ich wersjach oraz ewentualnym źródle (link do repozytorium github).

Instalacja vagranta na hoście

Aby rozpocząć zabawę z vagrantem należy na hoście zainstalować 3 rzeczy:

  • Vagrant - na oficjalnej stronce vagrantup są przygotowane instalatory na wszystkie systemy operacyjne
  • VirtualBox - wystarczy pobrać przygotowaną instalkę dla naszego systemu z oficjalnej strony Oracle VirtualBox
  • ruby oraz gem librarian-chef. W przypadku systemów windows instalacja tego gemu wymaga od nas instalacji tzw devkita do kompilacji gemów. Konfiguracja devkita na tym systemie jest dość problematyczna i nie będę się na niej skupiać. Więcej informacji na ten temat można znaleźć pod linkiem instalacja devkit windows. W przypadku systemów MacOS lub linux jedyne co musimy zrobić to zainstalować ruby (poprzez wbudowany system np: apt-get lub homebrew. Można także skorzystać z rbenv lub rvm). Po tej instalacji polecenie gem install librarian-chef załatwi za nas całą pracę związaną z konfiguracją devkitu i kompilacją gema

Gdy już mamy zainstalowane wszystkie zależności możemy zająć się instalacją maszyny. W tym celu za pomocą konsoli wchodzimy do katalogu naszego projektu (tam gdzie znajdują się pliki Vagrantfile oraz Cheffile) po czym wykonujemy następujące polecenia:

  • gem install certified - jest to wymóg przy instalacji chefa na systemie Windows. Jeżeli ktoś korzysta z innego systemu i bardzo chce pominąć tego gema to wystarczy usunąć linię require 'certified' z pliku Cheffile i może pominąć tą instalację
  • librarian-chef install - instaluje nam wszystkie zależności które sprecyzowaliśmy w pliku Cheffile
  • vagrant up - przy pierwszym wykonaniu pobiera maszynę wirtualną, uruchamia ją i wykonuje provision, czyli instalację i konfigurację wszystkich zależności. Natomiast przy następnych wykonaniach to polecenie uruchamia nam vagranta do pracy

Po wykonaniu tych poleceń (drugie może trwać nawet do godziny przy słabym internecie) pozostała nam instalacja ruby, railsów oraz node.js (do kompilacji TypeScriptu). W tym celu wykonujemy polecenia:

  • vagrant ssh - łączy się poprzez ssh z naszą maszyną wirtualną
  • cd /vagrant - przechodzimy do katalogu /vagrant, który jest współdzielony pomiędzy hostem a maszyną wirtualną. Jest to katalog naszego projektu
  • rvm install 2.2 - instaluje nam ruby w wersji 2.2.~
  • rvm use 2.2 --default --create - ustawia wersję ruby 2.2 na domyślną na serwerze oraz tworzy środowisko rubygems, w którym będą przechowywane nasze zależności
  • gem install bundler - instaluje bundlera
  • gem install rails - instaluje środowisko rails (może potrwać dość długo, szczególnie parsowanie dokumentacji rails
  • bundler install - instaluje wszystkie nasze zależności projektowe (także może potrwać długo, w zależności od szybkości internetu)
  • ./node-install.sh - instaluje i konfiguruje nam najnowszą wersję środowiska node.js

Teraz nasze środowisko powinno być gotowe do pracy. Aby uruchomić serwer rails należy wykonać polecenie rails server -b 0.0.0.0. Taki adres nakazuje słuchać serwerowi żądań na wszystkich adresach. Jest to potrzebne do pracy na zdalnym serwerze. Można także użyć prostego skryptu pomocnicznego ./server.sh który wykonuje dokładnie to samo.

Enjoy!

Nekromancer

Programista z zawodu i zamiłowania. W fundacji zajmuje się głównie rozwiązaniami backendowymi oraz aplikacjami mobilnymi. Współtwórca portalu apki.org oraz mentor na forum

Jastrzębie-Zdrój http://ownvision.pl/