Vagrant - RuPy Tuesday

Preview:

Citation preview

Vagrant

Leszek Smentek

Vagrant w kilku słowach

Vagrant jest narzędziem do zarządzania i konfiguracji wirtualnych środowisk. Opiera się o znane i sprawdzone technologie. Nie jest rozwiązanie dedykowanym konkretnemu zastosowaniu czy językowi dzięki czemu może być stosowane w wielu dziedzinach.

Główne zalety:

- szybkość tworzenia nowych wyspecjalizowanych środowisk

- łatwość i prostota tworzenia nowych konfiguracji

- przenośność

- duża ilość domyślnych rozwiązań na których można oprzeć własne konfiguracje

- możliwość rozbudowy o własne mechanizmy

Wykorzystywane technologie

- VirtualBox

- Ruby

- Chef

- Puppet

- SSH

Struktura projektu

- Sercem środowiska jest pojedynczy plik Vagrant, który zawiera informacje niezbędne do instalacji i konfiguracji wirtualnego środowiska.

- Plik jest w formacie tekstowym i zawiera kod języka Ruby.

- Niewielki rozmiar pozwala na dołączenie do repozytorium, co daje możliwość przechowywania dedykowanego środowiska dla każdego projektu razem ze źródłami.

Gdzie można zastosować wirtualne środowisko ?

- Teoretycznie wirtualne środowisko można wykorzystać w procesie tworzenia dowolnego typu aplikacji. Takie rozwiązanie daje pewność tego, że gotowy produkt zachowa się w sposób identyczny jak podczas produkcji .

- Praktycznie środowisko wirtualne opłaca się stosować wszędzie tam gdzie istnieje konieczność stosowania rozwiązań opartych konfiguracji serwera, który będzie hostem dla gotowej aplikacji.

Przykłady

Prosty przykład konfiguracji:

Instalacja narzędzi:

$ gem install vagrant

$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box

$ vagrant init

Inicjalizacja środowiska:

$ vagrant up

Logowanie do wirtualnej maszyny:

$ vagrant ssh

Zakończenie pracy ze środowiskiem:

$ vagrant down

Plik VagrantVagrant::Config.run do |config|

config.vm.box = "lucid32"

# Enable and configure the chef solo provisioner

config.vm.provision :chef_solo do |chef|

# We're going to download our cookbooks from the web

# chef.recipe_url = "http://files.vagrantup.com/getting_started/cookbooks.tar.gz"

chef.cookbooks_path = "cookbooks"

chef.add_recipe "apache2"

chef.add_recipe "postgresql"

chef.add_recipe "rails"

chef.add_recipe "passenger_apache2::mod_rails"

# Tell chef what recipe to run. In this case, the `vagrant_main` recipe

# does all the magic.

chef.add_recipe("vagrant_main")

end

end

Przydatne linki

- VirtualBox:

http://www.virtualbox.org/

- Vagrant:

http://vagrantup.com/

- Chef:

http://www.opscode.com/chef/

- Puppet:

http://www.puppetlabs.com/puppet/introduction/

Pytania

Dziękuję za uwagę