DevboxWirtualne środowisko pracy.
DevboxMaszyna wirtualna skonfigurowana do pracy developerskiej nad
wybranymi projektami.
Co zawierawszystkie zależności wymagane dla projektówzainstalowane i skonfigurowane projekty (każdy na oddzielnymvirtualenvie)dodatkowe narzędzia wspomagające pracę (virtualenvwrapper,pluginy hg ...)
Jakie narzędzia wykorzystujemyVagrantPuppetVirtualBox
Po co?ułatwienie i skrócenie czasu budowania projektówbudowanie na bazowym systemie o znanym stanie
Dlaczego buildout to za mało?Devbox jest w pełni skonfigurowanym systemem, na którym można
rozpocząć development zaraz po zbudowaniu.
Devbox - podsumowanieŚrodowisko wirtualne przeznaczone do developmentu projektów.
VagrantNarzędzie do tworzenia środowiska developerskiego. Wirtualne
środowisko jest budowane poprzez skopiowanie obrazu bazowego orazjego skonfigurowaniu.
Wrapper dla oprogramowania wirtualizującego tj. VirtualBox,VMware.
VagrantfileVAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "base" config.vm.network "private_network", ip: "192.168.50.4"
config.vm.provider :virtualbox do |vb| vb.name = "my_devbox" vb.memory = 512 end
config.vm.provision "shell", path: "script.sh"end
Podstawowe poleceniavagrant upvagrant sshvagrant statusvagrant reloadvagrant provision
Workflow - budowanieśrodowiska
1. Instalacja VirtualBoxa i Vagranta2. Dodanie bazowego obrazu:
3. Pobranie i ewentualna edycja konfiguracji4. vagrant up - tutaj rozpoczyna się budowanie naszego
środowiska pracy
vagrant box add precise32 http://files.vagrantup.com/precise32.box
Workflow - praca1. vagrant up - jeżeli wcześniej obraz był już zbudowany, tutaj
jest tylko uruchamiany (headless)2. Podmontowanie katalogu ze źródłami projektu (nfs, sshfs)3. vagrant ssh
Dlaczego montujemy z guesta na hosta?[+] Szybkość działania aplikacji[-] Szybkość wyszukiwania tekstu po całym projekcie
Workflow - nowy projekt1. odkomentowanie nazwy projektu z Vagrantfile
2. vagrant provision
PROJECTS_WHITELIST = [ 'ikd2', 'igooper2', # 'junior', # 'kids', # 'ifc', # 'vw_ufo', # 'cf_bo', # 'cf_fo', # 'bo_leasing', # 'vwl_fo_client', # 'fo_leasing']
autoryzacja CVS - kopiowanie pliku .cvspass poprzez provisionera“file”autoryzacja HG - forwardowanie agenta sshzmiana autoryzowanego klucza ssh na devboksie
config.ssh.private_key_path = [ PRIVATE_SSH_KEY_PATH, File.expand_path('~/.vagrant.d/insecure_private_key'),]
data = File.read(PUBLIC_SSH_KEY_PATH)config.vm.provision "shell" do |s| s.inline = "cat <<'EOF' > /home/vagrant/.ssh/authorized_keys \n#{data}\nEOF" s.privileged = falseend
Vagrant - podsumowanieWrapper na VritualBoxa ułatwiający pracę ze środowiskiem
wirtualnym.
PuppetPuppet jest tzw. menadżerem konfiguracji serwerów. Konfiguruje
maszynę docelową na podstawie manifestów.Manifesty przedstawiają stan końcowy w jakim mają znaleźć się dane
zasoby.Instrukcje puppetowe są idempotentne - przy kolejnych
konfiguracjach maszyny, Puppet wprowadzi zmiany w systemie tylkotam, gdzie stan się różni od stanu w konfiguracji.
Dlaczego Puppet?wspierany przez Vagranta (wybór pomiędzy puppet, chef, shell,ansible)dobra dokumentacja i duża społecznośćmożliwość konfiguracji master - agent (deployment) oraz apply(development)
Puppet Master i Agent
Puppet - co w nim robimy?instalowanie pakietów (apt-get, pip) oraz ich konfiguracja (np. HG,apache, reviewboard ...)pobieranie wymaganych plików binarnych dla projektówinstalacja i konfiguracja projektów ("ręcznie" i buildout)
Puppet - podsumowanieNarzędzie konfigurujące system operacyjny.
Co się dzieje po vagrant up?1. Vagrant
uruchomienie bazowej maszyny wirtualnej z odpowiedniąkonfiguracjąpodmiana publicznego klucza ssh na maszynieskopiowanie .cvspassuruchomienie puppet agenta na maszynie wirtualnej
2. Puppetinstalacja wymaganych i przydatnych paktietów oraz ichkonfiguracjapobranie zależności binarnych dla projektówbudowanie i konfiguracja projektów
Devbox - zaletyoszczędność czasu przy budowaniu projektów (nowy pracownik,pad dysku, reinstalacja systemu)brak błędów po stronie użytkownika przy budowaniu projektuchciałbym używać systemu X, ale projekt na nim nie działałatwa aktualizacja o nowe komponenty (projekty, pakiety, skrypty)
Top Related