Będąc deweloperem często potrzeba stworzyć na szybko środowisko do przetestowania. Administratorzy natomiast potrzebują maszyny wirtualnej do sprawdzenia, czy działa im ich własny skrypt. Grafik 3D będzie potrzebował kilku maszyn, aby móc szybciej wyrenderować swoją scenę. Dla wszystkich tych osób powstał właśnie Vagrant.

Vagrant jest narzędziem do tworzenia wirtualnych środowisk, z wykorzystaniem VirtualBoksa, VMWare, czy KVM. Konfiguracja jest podobna do takiego oprogramowania, jak Ansible, Chef, Salt i Puppet. Warto zaznaczyć, że działa on bez problemów na systemach Windows, Linux i OS X.

W naszym artykule skupimy się głównie na instalacji i konfiguracji pod systemem Windows 7 i CentOS, z wykorzystaniem VirtualBox.

Widows

Instalacja

Na początek musimy zainstalować VirtualBox i dodatki, które pobieramy ze strony www.virtualbox.org. Teraz trzeba dodać interpreter języka Ruby – rubyinstaller.org/downloads. Czasami potrzebne jest skorzystanie z tzw. Devkita.

Kiedy wykonamy wszystkie poprzednie czynności, możemy przystąpić do instalacji Vagranta. Udajemy się na stronę www.vagrantup.com/downloads i odszukujemy plik dla systemów Windows. Pobieramy, instalujemy i wykonujemy ponowne uruchomienie komputera.

Następnie przechodzimy do katalogu domowego użytkownika, gdzie znajdziemy folder .vagrant.d, w którym umieszczane są wszystkie pobrane przez nas kontenery systemów.

Konfiguracja

Teraz trzeba będzie skorzystać z konsoli Windows. Naciskamy Windows+R i wpisujemy CMD. Można też użyć do tego PowerShella.

Na początek trzeba stworzyć katalog w dowolnym miejscu w systemie:
mkdir Vagrant

Pobieramy nowy obraz:
vagrant box add CentOS6_virtualmin https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.0.0/centos-6.6-x86_64.box

Warto zaznaczyć, że Vagrant tworzy osobny katalog o nazwie .vagrant.d, w którym przechowuje pobrane pliki. Dzięki temu wszystkie pobrane kontenery, mamy w jednym miejscu.

Teraz wydajemy polecenie do stworzenia maszyny wirtualnej:
vagrant init CentOS6_virtualmin

Jeżeli zdarzy się Wam, że w tym momencie, coś nie będzie działać i wyskoczą błędy, to usuwamy wszystko z katalogu Vagrant i jeszcze raz uruchamiamy powyższe polecenie.

Aby uruchomić naszą maszynę Vagrant, wydajemy polecenie:
vagrant up

Wyskoczy nam takowy komunikat:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'CentOS6_virtualmin'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: Vagrant_default_1441805203368_52698
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Connection timeout. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => C:/Users/nazwa_użytkownika/Vagrant

Aby zalogować się do działającej maszyny, używamy programu PuTTy, Xshell lub innego dowolnego klienta konsoli dla systemów Windows. Pamiętajmy, że wszystko odbywa się przy pomocy loginu vagrant oraz klucza prywatnego, utworzonego w katalogu maszyny.

CentOS

Instalacja

cd /etc/yum.repos.d/
wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
yum update
yum update kernel
yum install gcc make patch  dkms qt libgomp 
yum install kernel-headers kernel-devel fontforge binutils glibc-headers glibc-devel
yum install VirtualBox-5.0.x86_64

Opcjonalne:
KERN_DIR=/usr/src/kernels/`uname -r`-`uname -m`
lub ręcznie wchodzimy do ścieżki /usr/src/kernels/..
export KERN_DIR
/etc/init.d/vboxdrv setup

Przechodzimy do ścieżki:
http://download.virtualbox.org/virtualbox/5.0.2/

i kopiujemy adres linku do naszego dodatku:
http://download.virtualbox.org/virtualbox/5.0.2/Oracle_VM_VirtualBox_Extension_Pack-5.0.2.vbox-extpack

Teraz przechodzimy do tymczasowego katalogu, pobieramy wyżej wybrany plik, oraz instalujemy dodatek do Virtualbox, ostatnie polecenie dodaje nam użytkownika do grupy.

cd /tmp/
wget http://download.virtualbox.org/virtualbox/5.0.2/Oracle_VM_VirtualBox_Extension_Pack-5.0.2.vbox-extpack
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.2.vbox-extpack
usermod -a -G vboxusers user_name

Po wykonaniu powyższych zadań, zostaje nam instalacja paczki z Vagrantem:

rpm -iv https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.4_x86_64.rpm

Sprawdzamy jeszcze zainstalowaną wersję:
vagrant -v

Uruchomienie i konfiguracja

W celu utworzenia nowej maszyny wirtualnej, warto zapoznać się z listą dostępnych: http://www.vagrantbox.es/ i https://atlas.hashicorp.com/boxes/search. My utworzymy dla przykładu wirtualkę z minimalną instalacją CentOSa 6.

Konfiguracja

Na początek musimy stworzyć odpowiedni katalog:

mkdir /opt/boxes

i zmienić grupę, do której wszystko należy:

chgrp -R vboxusers /opt/boxes

Teraz tworzymy nowy katalog:

mkdir /opt/centos6_virtualmin

i pobieramy nowy obraz:

vagrant box add CentOS6_virtualmin https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.0.0/centos-6.6-x86_64.box

Odczekujemy chwilkę, po czym wydajemy polecenie do stworzenia maszyny wirtualnej:

vagrant init CentOS6_virtualmin

Jeśli wyskoczy nam poniższy błąd:

It appears your machine doesn’t support NFS, or there is not an adapter to enable NFS on this machine for Vagrant. Please verify that `nfsd` is installed on your machine, and try again. If you’re on Windows, NFS isn’t supported. If the problem persists, please contact Vagrant support.

musimy doinstalować odpowiednie biblioteki:

yum install nfs-utils nfs-utils-lib
/etc/init.d/rpcbind start
/etc/init.d/nfslock start
/etc/init.d/nfs restart

Przechodzimy do folderu ze swoim VagrantFile. Możemy go na początek utworzyć dzięki gotowym rozwiązaniom ze stron: https://puphpet.com/#frontpage i http://getprotobox.com/.

Aby uruchomić naszą maszynę Vagrant, wydajemy polecenie:

vagrant up

Warto w tym miejscu przypomnieć o poleceniu screen, które pozwoli nam na uruchomienie maszyny w pełni, w tle:

screen -L -dmS vagrant-centos6 vagrant up

Teraz możemy zalogować się na maszynę przy pomocy polecenia:

vagrant ssh

Zmiana ustawień regionalnych

Czasami zdarzy się, że pobrany obraz ma ustawione inne ustawienia regionalne, niż międzynarodowe. Np. po wydaniu polecenia locale -a wyświetla się nam coś takiego:

LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

Trzeba w tym momencie edytować plik i18n:
vim /etc/sysconfig/i18n

i zmienić pierwszą linijkę na LANG="en_US.UTF-8". Zapisać całość i przeładować ustawienia przy pomocy polecenia:
source /etc/sysconfig/i18n

Podobne artykuły

  • tomangelo

    Trochę nie łapię, to jest program uruchamiający program uruchamiający wirtualną maszynę?

    • Vagrant pozwala za pomoca polecenia “vagrant up” oraz pliku Vagranfile zbudować Ci lokalnie środowisko developerskie np. serwer www + serwer z bazą danych.

    • Piotr Mierzwiński

      Czym to się różni od ręcznego postawienia maszyny wirtualnej (np. w VirtualBox) + konfiguracja (np. www + baza danych) i wielokrotnego klonowania takiej maszyny ?

    • R

      Że możesz korzystać z wielu różnych platform do testowania/deweloperki? Sprawdzać działanie programu w wielu konfiguracjach jednocześnie, np. pod Zgrozą i Óbóntó.

    • Największą moim zdaniem zaletą jest fakt, że przygotowujesz kilka maszyn wirtualnych, konfigurujesz je, robisz obraz Vagranta a potem dajesz deweloperowi plik Vagrantfile. On wykonuje polecenie “vagrant up” i ma swoje lokalne środowisko. Nie musi nic konfigurować.

      Jeżeli coś popsuje wydaje vagrant destroy, potem vagrant up i od nowa ma czyste środowisko do pracy.

      Administratorom przydaje się to do testowania różnych rozwiązań. Vagrant automatyzuje te zadania, które mógłbyś np. wyklikac.

  • Pingback: Vagrant – instalacja i konfiguracja pod Windows i Linux()

  • Paweł

    Prośba: zróbcie coś z tłem albo nagłówkiem artykułu. Niektóre tła sprawiają, że nagłówek jest trudny do odczytania. Poza tym nowy wygląd jest na plus.

    • Leszek

      U mnie działa.

    • Paweł

      Podły… :)

  • CentOS user

    Wszędzie tylko VirtualBox…. po jakiego grzyba :) mam instalować na CentOSie to “coś” skoro w dystrybucji jest na dzień dobry KVM… ale znaleźć juz opis używania tego wespół z KVM jest problematyczne bowiem wszyscy od wszystkich kopiują rozwiązanie z VB a tylko jeden opis znalazłem z KVM. :P

  • Pingback: HTTP Load Balancing za pomocą NginX - IT Blog()