Vagrant workshop

Preview:

DESCRIPTION

Vagrant workshop

Citation preview

wojtek krawczyk - interia.pl

about.me/wojtekk

Przygotowanie środowiska

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 "Your.Name@example.org"git config --global user.name "Your Name"

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

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

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

Wsparcie Vagrant w IDEVagrant - Netbeans pluginVagrant Support in PhpStorm

Praca z projektem

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

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

SSHDostęp do maszyny po SSH

vagrant ssh

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

Status maszynPojedynczej

vagrant status

Wszystkichvagrant global-status

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

Vagrant PluginsLista

Dodanie

Usunięcie

Aktualizacja

vagrant plugin list

vagrant plugin install <name>

vagrant plugin uninstall <name>

vagrant plugin update

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

uśpić

wyłączyć

zniszczyć

vagrant suspend

vagrant halt

vagrant destroy

Koniec :)Części pierwszej

Nowy projekt

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

Wyklikanie box'a PuPHPet

rove.io

Kompletny BoxSzukasz box'a z wymaganym oprogramowaniem na:

vagrantcloud.com

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"

Kompletny box z LAMPUruchom maszynę

Otwórz w przeglądarce:

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

$ vagrant up

localhost:8080

Provisioning

Przygotowanie środowiskaZainstaluj plugin sahara

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

Nowy projektPrzygotuj środowisko dla .DokuWiki

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

WymaganiaDokuWiki jest instalowane w środowisku , precyzyjnie:LAMP

LinuxApache PHP 5

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

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

DokuWiki

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.

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

Inicjalizacja projektuZainicjalizuj Vagrant dla projektu

vagrant init hashicorp/precise64

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

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

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

touch install.sh

Uruchom maszynęvagrant up

Włącz tryb sanboxvagrant sandbox on

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

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

Shell provisioningWyłącz tryb sanbox

vagrant sandbox off

TestyPrzetestuj przygotowane środowisko

vagrant destroyvagrant up

Koniec :)Części drugiej

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

Dziękuję!