Vagrant workshop

41
wojtek krawczyk - interia.pl about.me/wojtekk

description

Vagrant workshop

Transcript of Vagrant workshop

Page 1: Vagrant workshop

wojtek krawczyk - interia.pl

about.me/wojtekk

Page 2: Vagrant workshop

Przygotowanie środowiska

Page 3: Vagrant workshop

Instalacja oprogramowaniaPobierz i zainstaluj aplikacje:

Dodaj vagrant-vbguest - aktualizuje Virtual Box Guest Additions

Dodatkowo, na potrzeby tego warsztatu zainstaluj:

Skonfiguruj Git'a:

VirtualBoxVagrant

vagrant plugin install vagrant-vbguest

Git

git config --global user.email "[email protected]"git config --global user.name "Your Name"

Page 4: Vagrant workshop

Instalacja oprogramowaniaJeżeli twój katalog domowy, pod Windows, jest na dyskusieciowym (np. za sprawą Active Directory), zadbaj o ustawieniezmiennych środowiskowych

Większość może pominąć ten slajd.

VAGRANT_HOMEVAGRANT_HOME = C:\Users\imie.nazwisko\AppData\Local\Vagrant

VBOX_USER_HOMEVBOX_USER_HOME = C:\Users\imie.nazwisko\AppData\Local\VirtualBox

Page 5: Vagrant workshop

CLINa potrzeby tego warsztatu będziesz korzystał z linii poleceń:

Windows: Git Bash Linux/Mac OS X: dowolna powłoka

Page 6: Vagrant workshop

Wsparcie Vagrant w IDEVagrant - Netbeans pluginVagrant Support in PhpStorm

Page 7: Vagrant workshop

Praca z projektem

Page 8: Vagrant workshop

ProjektSerwis informacyjny oparty o Wordpress, środowisko uruchomieniowe: LAMP.

Page 9: Vagrant workshop

Zaczynamy!Pobierz kod

git clone https://github.com/wojtekk/vagrantpress.git

Uruchom środowiskocd vagrantpressvagrant up

Otwórz w przeglądarce:

Keep calm and go to work!

localhost:8080

Page 10: Vagrant workshop

SSHDostęp do maszyny po SSH

vagrant ssh

Page 11: Vagrant workshop

SSH ‐ PuttyKlucz prywatny (OpenSSH) znajdziesz w pliku:

insecure_private_key

w katalogu domowy Vagrant, domyślnie:%USERPROFILE%/.vagrant.d lub %VAGRANT_HOME%

Konwertuj klucz OpenSSH do formatu klucza prywatnego Puttykorzystając z :PuTTYgen

Conversion \ Import Save private key

Utwórz połączenie w Putty:vagrant@localhost:2222

Page 12: Vagrant workshop

Status maszynPojedynczej

vagrant status

Wszystkichvagrant global-status

Page 13: Vagrant workshop

Vagrant BoxLista

Dodanie

Usunięcie

Sprawdzenie aktualności

Aktualizacja

vagrant box list

vagrant box add <user/box>vagrant box add <url>

vagrant box remove <name>

vagrant box outdated

vagrant box update

Page 14: Vagrant workshop

Vagrant PluginsLista

Dodanie

Usunięcie

Aktualizacja

vagrant plugin list

vagrant plugin install <name>

vagrant plugin uninstall <name>

vagrant plugin update

Page 15: Vagrant workshop

Kończymy!Kończąc prace możesz maszynę:

uśpić

wyłączyć

zniszczyć

vagrant suspend

vagrant halt

vagrant destroy

Page 16: Vagrant workshop

Koniec :)Części pierwszej

Page 17: Vagrant workshop

Nowy projekt

Page 18: Vagrant workshop

Przygotowanie maszyny1. Szukasz gotowca w sieci np. na GitHub, Google 2. Korzystasz z GUI które pozwalają wyklikać konfigurację3. Szuka box'a który ma wymagane oprogramowanie 4. Przygotowujesz maszynę samodzielnie

Page 19: Vagrant workshop

Wyklikanie box'a PuPHPet

rove.io

Page 20: Vagrant workshop

Kompletny BoxSzukasz box'a z wymaganym oprogramowaniem na:

vagrantcloud.com

Page 21: Vagrant workshop

Kompletny box z LAMPZainicjalizuj box

vagrant init smallhadroncollider/centos-6.4-lamp

EDYTUJESZ VAGRANTFILEUstaw przekierowanie portów dla apache

Apache korzysta z katalogu /var/www/public - podstawkod

Autor rekomenduje użycie statycznego IP na potrzeby SSL

config.vm.network :forwarded_port, guest: 80, host: 8080

config.vm.synced_folder "./", "/var/www"

config.vm.network "private_network", ip: "172.31.254.252"

Page 22: Vagrant workshop

Kompletny box z LAMPUruchom maszynę

Otwórz w przeglądarce:

$ mkdir public$ echo "test" > public/index.html

$ vagrant up

localhost:8080

Page 23: Vagrant workshop

Provisioning

Page 24: Vagrant workshop

Przygotowanie środowiskaZainstaluj plugin sahara

Obsługa sandbox'ów (snapshoty w VirtualBox)vagrant plugin install sahara

Page 25: Vagrant workshop

Nowy projektPrzygotuj środowisko dla .DokuWiki

Page 26: Vagrant workshop

Kroki1. Określ wymagania oprogramowania2. Wybierz lub przygotuj box'a3. Przygotuj konfiguracje środowiska - Vagrantfile4. Przygotuj konfiguracji systemu - provisioning5. Przetestuj przygotowane rozwiązanie

Page 27: Vagrant workshop

WymaganiaDokuWiki jest instalowane w środowisku , precyzyjnie:LAMP

LinuxApache PHP 5

DokuWiki przechowuje dane obok kodu - musi mieć prawa dozapisu.

Page 28: Vagrant workshop

Przygotowanie kodu aplikacji1. Utwórz katalog dla projektu2. Pobierz 3. Rozpakuj go do katalogu public

DokuWiki

Page 29: Vagrant workshop

Box’yBoxy to szablony maszyn. Udostępniamy je w sieci.Są przechowywane w katalogu .vagrant użytkownika (niewersjonujemy go).Podczas inicjalizacji nowej maszyny, box jest pobierany z sieci(jeżeli nie był wcześniej pobrany), a następnie kopiowany dokatalogu .vagrant w projekcie i konfigurowany.

Page 30: Vagrant workshop

Wybór BOX'aDwie drogi:

tworzysz sam, szukasz gotowego,

Dwa narzędzia: - wspomaga tworzenie własnych box'ów,

- zbiór gotowych rozwiązań.VeeweeVagrant Cloud

Page 31: Vagrant workshop

Inicjalizacja projektuZainicjalizuj Vagrant dla projektu

vagrant init hashicorp/precise64

Zainicjalizuj Git'agit initgit statusgit add Vagrantfilegit commit -m "Initial commit"

Page 32: Vagrant workshop

Edycja Vagrantfile1. Forwarded port 2. Synced folder 3. Provisioning

# -*- mode: ruby -*-# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "hashicorp/precise64""

config.vm.network "forwarded_port", guest: 80, host: 8080

config.vm.synced_folder "./public", "/var/www", id: "vagrant-root", owner: "vagrant", group: "www-data", mount_options: ["dmode=775,fmode=664"]

config.vm.provision "shell", path: "install.sh"end

Page 33: Vagrant workshop

Shell provisioningUtwórz plik install.sh w katalogu głównym projektu.

touch install.sh

Uruchom maszynęvagrant up

Włącz tryb sanboxvagrant sandbox on

Page 34: Vagrant workshop

Shell provisioningPrzygotuj provisioning edytując plik install.sh

Uruchom provisioning

vagrant provision

Przeładuj środowisko jeżeli modyfikowałe ś Vagrantfilevagrant reload

Zaakceptuj lub odrzuć zmianyvagrant sandbox commitvagrant sandbox rollback

Page 35: Vagrant workshop

install.sh# Update packages listsudo apt-get update

# Install required softwaresudo apt-get install -y php5 apache2 libapache2-mod-php5 php5-curl php5-gd

# Change default Apache and PHP configuration - show errorssed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php5/apache2/php.inised -i "s/display_errors = .*/display_errors = On/" /etc/php5/apache2/php.inised -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf

# Restart Apachesudo service apache2 restart

Page 36: Vagrant workshop

Shell provisioningWyłącz tryb sanbox

vagrant sandbox off

Page 37: Vagrant workshop

TestyPrzetestuj przygotowane środowisko

vagrant destroyvagrant up

Page 38: Vagrant workshop

Koniec :)Części drugiej

Page 39: Vagrant workshop

Vagrant w moim projekcieTradycyjne środowisko dla PHP (Linux Apache MySQL PHP)

Vagrant Cloud - A CentOS 6.4 installation with LAMP stack

Nietypowa konfiguracja, testy nowych rozwiązań

Nginx, HHVM, Redis, RabbitMQ, ... Skorzystaj z PuPHPet

Własne środowisko, szyte na miarę

Vagrant Cloud - Official Ubuntu Server 14.04 LTS (TrustyTahr) builds

Page 40: Vagrant workshop
Page 41: Vagrant workshop

Dziękuję!