Ibuildings blog

afbeelding van Sandy

Ready steady cook

Afgelopen woensdag hadden we de laatste interne workshop van het jaar en deze ging over de best practices met Vagrant en Chef. Deze tools worden al een tijdje gebruikt binnen Ibuildings maar gezien er vele wegen naar Rome leiden werd het tijd om wat kennis te delen binnen het bedrijf. Hiervoor heeft Martijn de Letter een presentatie gemaakt die Vagrant, Ruby en Chef laat zien met de best practices.

Vagrant

De presentatie begon met een kleine introductie van Vagrant. Dit is een tool geschreven in Ruby die via een provider een nieuwe virtuele machine (Virtualbox of VMWare) kan maken en configureren.

De vagrantfile

Om een vagrant image te maken heb je een ‘Vagrantfile’ nodig in de root van je project waar je de specificaties van je machine kan opgeven en kan aangeven wat hij moet starten.

Om een virtuele machine te maken heb je ook een ‘Base box’ nodig. Vagrant zelf heeft 2 Ubuntu linux base boxes op de site staan die je kan gebruiken. Eventueel kan je ook op http://www.vagrantbox.es/ kijken voor andere base boxen. Binnen Ibuildings gebruiken we een eigen gemaakte base box omdat we zeker willen zijn dat er geen vreemde software geinstalleerd is. Wanneer je ook zelf een basebox wil maken kijk dan ook eens naar https://github.com/jedi4ever/veewee

Ruby

Omdat beide tools geschreven zijn in Ruby kan een kleine basis cursus voor PHP Ontwikkelaars natuurlijk niet ontbreken in deze presentatie. De overeenkomsten zijn:

  • Ruby is ook dynamically typed, dus je hoeft geen variablen te declareren.
  • Ook ruby heeft een ‘eval’ functie :)
  • Arrays en hashes werken bijna het zelfde, als je array() veranderd in { en }, bijvoorbeeld: array(‘a’ => ‘b’) word {‘a’ => ‘b’}
  • True en false zijn het zelfde als in PHP, maar null word nil genoemd.
  • Je kan variablen gebruiken in strings, dus “$foo is a $bar” word dan “#{foo} is a #{bar}”.

Chef

Als je vagrant klaar is met starten heb je een kale installatie waar je als ontwikkelaar nog niet zoveel mee kan en dat is waar Chef komt kijken. Chef kan een server installeren, configureren en updaten, precies zoals jouw wensen. Doormiddel van Rollen die je toekent aan een server krijg je een ander resultaat, bijvoorbeeld:

  • Een PHP productie omgeving
  • Een PHP ontwikkel omgeving met X-Debug, etc
  • Een Database server

De mogelijkheden zijn eindeloos met Chef. Om software te installeeren maakt Chef gebruikt van Cookbooks (http://community.opscode.com/cookbooks). Op de site van Chef staan al meer dan 1000 kant en klare Cookbooks die je kan gebruiken. Voor ibuildings hebben we een default Cookbook gemaakt die PHP, MySQL en Apache opzet met behulp van de bestaande Cookbooks en in de vagrantfile kunnen we eventuele default configuraties overriden. Tevens maakt deze standaard opzet ook gebruik van https://github.com/applicationsonline/librarian-chef (de composer voor Chef cookbooks) waardoor het toevoegen van nieuwe cookbooks heel eenvoudig is geworden.

Conclusie

Inmiddels werkt iedereen al met Vagrant + Chef en met de nieuwe Ibuildings Cookbooks is het nu vrij eenvoudig om een PHP development omgeving op te zetten en te configureren. Dus nu kunnen we ‘s ochtends onze virtuele machine aanzetten en wanneer je dan terug komt van de Koffie automaat staat er een geupdate machine klaar om te beginnen met ontwikkelen.

Het is een investering die in het begin wat tijd kost om op te zetten, maar deze betaald zit uiteindelijk dubbel en dwars terug. Een aanrader voor iedereen!

Voor mensen die benieuwd zijn naar de presentatie:

Resources:

http://www.vagrantup.com/
http://www.getchef.com/
https://github.com/jedi4ever/veewee
http://www.vagrantbox.es/

    Leave a reply