SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Entwicklung mit Chef
„Oh, unser Server hat sich eben neu installiert“
Ich..

Florian Holzhauer
Twitter: @fholzhauer
Seit Januar Head of Engineering bei Digital Pioneers N.V.
PHP-Freelancer, primär Backend


Slideshare:

                                                            2
Digital Pioneers

• „ist eine börsennotierte Beteiligungsgesellschaft“
• entwickelt eine Handvoll Startup-Prototypen pro Jahr
• Prototyp wird von einem Team von ~5 Personen entwickelt
• „irgendwas mit Web“ - PHP, Ruby, Mobile
• Mit neuer Technik experimentieren
   Erfahrungswerte auch für Beteiligungen

                                                            3
Klassische Entwicklungsumgebung

• VMware, VirtualBox, Parallels
   Mutiert irgendwie rum
• XAMPP & Co
   Entwickler-OS reflektiert nicht Produktion
• Entwickler-Server
   Unterwegs arbeiten? Updates? Sync? Shared?

                                                4
Entwicklungsgrundsätze

• Automatisiertes Testen
• Continuous Testing
• Versionierung (github ftw!)
• Automatisches Deployment


                                ...aber Frickelkram beim Setup?

                                                                  5
Chef(*) to the rescue!

   „Chef is an open-source systems integration framework built
   specifically for automating the cloud. Because it combines the
   fundamental elements of configuration management and service
   oriented architectures with the full power of Ruby, Chef makes it
   easy to create an elegant, fully automated infrastructure.“
                                                    http://www.opscode.com/chef/




(*) Alternativ: Puppet.                                                            6
Chef Features

• Administration als Ruby-Codemodule („Cookbooks“)
   nur einfaches Ruby-Subset relevant
• Sensitive Credentials externalisierbar
   Cookbooks problemlos öffentlich sichtbar
• Automatisiert, Reproduzierbar, Skalierbar, Versionierbar.



                                                              7
Vagrant

• Chef-Setup in Virtualbox ausführen
• Konfiguration in einem Textfile
• Installiert VM, führt anschliessend Chef-Scripte aus




                                                         8
„Demo“
fh$ vagrant up
[default] Importing base box 'lucid64'...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 80 => 8080 (adapter 1)
[default] -- 27017 => 27017 (adapter 1)
                                                                    Hallo nodejs :-)
[default] Creating shared folders metadata...
[default] Booting VM...
[default] VM booted and ready for use!
[default] Mounting shared folders...
[default] Running provisioner: Vagrant::Provisioners::ChefSolo...
[default] Generating chef JSON and uploading...
[default] Running chef-solo...
(...)
[Tue, 12 Jun 2012 15:53:46 +0200] INFO: Chef Run complete in 1435.381366 seconds
[Tue, 12 Jun 2012 15:53:46 +0200] INFO: Running report handlers
[Tue, 12 Jun 2012 15:53:46 +0200] INFO: Report handlers complete
fh-dp:vagrant fh$ vagrant ssh
Linux lucid64 2.6.32-33-server #70-Ubuntu SMP
Ubuntu 10.04.3 LTS

Welcome to the Ubuntu Server!
vagrant@lucid64:~$




                                                                                   9
Vagrantfile
Vagrant::Config.run do |config|
  config.vm.box = "lucid64"
  config.vm.forward_port 8080, 8080
  config.vm.share_folder("webdev","/var/www","../webapp", :extra => "uid=33")
  config.vm.provision :chef_solo do |chef|
     chef.cookbooks_path = "../../cookbooks"
     chef.add_recipe "nginx"
     chef.add_recipe "php"
     chef.add_recipe "php::module_xdebug"
     chef.add_recipe "symfony"
     chef.add_recipe "website::vagrant"
     chef.json.merge!({
        :environment => {
          :symfony => {
            :environment => 'dev',
            :debug => true
        }
      }
    })
  end
end

                                                     --verbose: https://gist.github.com/2462747

                                                                                             10
Cookbook-Repository für alle Projekte




                                        11
..und live? Scalarium!




                         12
Autoskalierung, Serverfarm




                             13
One-Click-Deploy




                   14
Work in progress
• Jenkins Tests in Vagrantbox
• Directory-Sharing bei Vagrant: Wahl zwischen Pest und Cholera
   vboxfs ist doof. nfs auch.
• xdebug hakelig
• Dokumentation teilweise spärlich
• Interaktion von aussen mit der Vagrantbox nervig
   vagrant ssh -c ‘sudo sudo -u www-data ant phpunit‘




                                                                  15
Sinnvoll?

• Einarbeitungszeit minimal
• Hemmschwelle „Umgebungsreset“ klein
• Gleicher Stand in allen Projekten
• Änderungen am Systemsetup extrem einfach umsetzbar
• Live-Infrastruktur-Setup in 15 Minuten runderneuert
   Auto-Heal!


                                                        16
Demo, Fragen?

              http://www.opscode.com/chef/
                  http://vagrantup.com/
                http://www.scalarium.com/
    https://github.com/digitalpioneers/public-cookbooks


              http://digitalpioneers.de/jobs/

                                                          17

Weitere ähnliche Inhalte

Was ist angesagt?

GUUG Hamburg OpenNebula
GUUG Hamburg OpenNebulaGUUG Hamburg OpenNebula
GUUG Hamburg OpenNebulaMartin Alfke
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als CodeJan Gehring
 
Django & Buildout
Django & BuildoutDjango & Buildout
Django & Buildoutzerok
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...inovex GmbH
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit RexJan Gehring
 
Versionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und GitVersionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und Gitpaultcochrane
 
Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Oliver Busse
 
Vagrant - Einführung & Verwendung
Vagrant - Einführung & VerwendungVagrant - Einführung & Verwendung
Vagrant - Einführung & VerwendungTilo Baller
 
German Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als CodeGerman Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als CodeJan Gehring
 
Infonova Devopscon München 2015
Infonova Devopscon München 2015Infonova Devopscon München 2015
Infonova Devopscon München 2015Georg Öttl
 
Einführung in Laravel und GulpJS
Einführung in Laravel und GulpJSEinführung in Laravel und GulpJS
Einführung in Laravel und GulpJSthespazecookie
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?punkt.de GmbH
 
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbHEntwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbHstijink
 

Was ist angesagt? (20)

GUUG Hamburg OpenNebula
GUUG Hamburg OpenNebulaGUUG Hamburg OpenNebula
GUUG Hamburg OpenNebula
 
Arquillian
ArquillianArquillian
Arquillian
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
 
Einführung Maven
Einführung MavenEinführung Maven
Einführung Maven
 
Django & Buildout
Django & BuildoutDjango & Buildout
Django & Buildout
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit Rex
 
Versionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und GitVersionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und Git
 
Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"
 
Werkzeugkasten
WerkzeugkastenWerkzeugkasten
Werkzeugkasten
 
Vagrant - Einführung & Verwendung
Vagrant - Einführung & VerwendungVagrant - Einführung & Verwendung
Vagrant - Einführung & Verwendung
 
German Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als CodeGerman Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als Code
 
Infonova Devopscon München 2015
Infonova Devopscon München 2015Infonova Devopscon München 2015
Infonova Devopscon München 2015
 
Einführung in Laravel und GulpJS
Einführung in Laravel und GulpJSEinführung in Laravel und GulpJS
Einführung in Laravel und GulpJS
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbHEntwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
 
Infra coders meetup
Infra coders meetupInfra coders meetup
Infra coders meetup
 

Ähnlich wie Entwicklung mit Chef und Vagrant - PHPUG HH

Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?René Winkelmeyer
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampWerner Keil
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsJosef Adersberger
 
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)NETWAYS
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerSteven Grzbielok
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenOPITZ CONSULTING Deutschland
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerPatrick Baumgartner
 
Herstellerunabhängige RZ Automatisierung mit orcharhino
Herstellerunabhängige RZ Automatisierung mit orcharhinoHerstellerunabhängige RZ Automatisierung mit orcharhino
Herstellerunabhängige RZ Automatisierung mit orcharhinoATIX AG
 
Serverprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen InfrastrukturServerprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen Infrastrukturinovex GmbH
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computingWolfgang Weigend
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rexinovex GmbH
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedRené Winkelmeyer
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!Tobias Schneck
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerSandro Sonntag
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenOdilo Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenPatrick Baumgartner
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...Marc Müller
 
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployDevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployMark Lechtermann
 

Ähnlich wie Entwicklung mit Chef und Vagrant - PHPUG HH (20)

Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 
Herstellerunabhängige RZ Automatisierung mit orcharhino
Herstellerunabhängige RZ Automatisierung mit orcharhinoHerstellerunabhängige RZ Automatisierung mit orcharhino
Herstellerunabhängige RZ Automatisierung mit orcharhino
 
Serverprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen InfrastrukturServerprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen Infrastruktur
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computing
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rex
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
 
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployDevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
 

Mehr von Florian Holzhauer

Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Florian Holzhauer
 
Text Link Spam-Erkennung und -Unterdrückung
Text Link Spam-Erkennung und -UnterdrückungText Link Spam-Erkennung und -Unterdrückung
Text Link Spam-Erkennung und -UnterdrückungFlorian Holzhauer
 
Slides Link Spam-Erkennung und -Unterdrückung
Slides Link Spam-Erkennung und -UnterdrückungSlides Link Spam-Erkennung und -Unterdrückung
Slides Link Spam-Erkennung und -UnterdrückungFlorian Holzhauer
 
Jabber is more than instant messaging
Jabber is more than instant messagingJabber is more than instant messaging
Jabber is more than instant messagingFlorian Holzhauer
 
Linkspam: Erkennung und Unterdrückung
Linkspam: Erkennung und UnterdrückungLinkspam: Erkennung und Unterdrückung
Linkspam: Erkennung und UnterdrückungFlorian Holzhauer
 

Mehr von Florian Holzhauer (9)

Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012
 
Text Link Spam-Erkennung und -Unterdrückung
Text Link Spam-Erkennung und -UnterdrückungText Link Spam-Erkennung und -Unterdrückung
Text Link Spam-Erkennung und -Unterdrückung
 
Slides Link Spam-Erkennung und -Unterdrückung
Slides Link Spam-Erkennung und -UnterdrückungSlides Link Spam-Erkennung und -Unterdrückung
Slides Link Spam-Erkennung und -Unterdrückung
 
IP Geolocation
IP GeolocationIP Geolocation
IP Geolocation
 
Jabber is more than instant messaging
Jabber is more than instant messagingJabber is more than instant messaging
Jabber is more than instant messaging
 
DTN Routing Verfahren
DTN Routing VerfahrenDTN Routing Verfahren
DTN Routing Verfahren
 
bephpug - varnish & co
bephpug - varnish & cobephpug - varnish & co
bephpug - varnish & co
 
Jabber/XMPP
Jabber/XMPPJabber/XMPP
Jabber/XMPP
 
Linkspam: Erkennung und Unterdrückung
Linkspam: Erkennung und UnterdrückungLinkspam: Erkennung und Unterdrückung
Linkspam: Erkennung und Unterdrückung
 

Entwicklung mit Chef und Vagrant - PHPUG HH

  • 1. Entwicklung mit Chef „Oh, unser Server hat sich eben neu installiert“
  • 2. Ich.. Florian Holzhauer Twitter: @fholzhauer Seit Januar Head of Engineering bei Digital Pioneers N.V. PHP-Freelancer, primär Backend Slideshare: 2
  • 3. Digital Pioneers • „ist eine börsennotierte Beteiligungsgesellschaft“ • entwickelt eine Handvoll Startup-Prototypen pro Jahr • Prototyp wird von einem Team von ~5 Personen entwickelt • „irgendwas mit Web“ - PHP, Ruby, Mobile • Mit neuer Technik experimentieren Erfahrungswerte auch für Beteiligungen 3
  • 4. Klassische Entwicklungsumgebung • VMware, VirtualBox, Parallels Mutiert irgendwie rum • XAMPP & Co Entwickler-OS reflektiert nicht Produktion • Entwickler-Server Unterwegs arbeiten? Updates? Sync? Shared? 4
  • 5. Entwicklungsgrundsätze • Automatisiertes Testen • Continuous Testing • Versionierung (github ftw!) • Automatisches Deployment ...aber Frickelkram beim Setup? 5
  • 6. Chef(*) to the rescue! „Chef is an open-source systems integration framework built specifically for automating the cloud. Because it combines the fundamental elements of configuration management and service oriented architectures with the full power of Ruby, Chef makes it easy to create an elegant, fully automated infrastructure.“ http://www.opscode.com/chef/ (*) Alternativ: Puppet. 6
  • 7. Chef Features • Administration als Ruby-Codemodule („Cookbooks“) nur einfaches Ruby-Subset relevant • Sensitive Credentials externalisierbar Cookbooks problemlos öffentlich sichtbar • Automatisiert, Reproduzierbar, Skalierbar, Versionierbar. 7
  • 8. Vagrant • Chef-Setup in Virtualbox ausführen • Konfiguration in einem Textfile • Installiert VM, führt anschliessend Chef-Scripte aus 8
  • 9. „Demo“ fh$ vagrant up [default] Importing base box 'lucid64'... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] -- 80 => 8080 (adapter 1) [default] -- 27017 => 27017 (adapter 1) Hallo nodejs :-) [default] Creating shared folders metadata... [default] Booting VM... [default] VM booted and ready for use! [default] Mounting shared folders... [default] Running provisioner: Vagrant::Provisioners::ChefSolo... [default] Generating chef JSON and uploading... [default] Running chef-solo... (...) [Tue, 12 Jun 2012 15:53:46 +0200] INFO: Chef Run complete in 1435.381366 seconds [Tue, 12 Jun 2012 15:53:46 +0200] INFO: Running report handlers [Tue, 12 Jun 2012 15:53:46 +0200] INFO: Report handlers complete fh-dp:vagrant fh$ vagrant ssh Linux lucid64 2.6.32-33-server #70-Ubuntu SMP Ubuntu 10.04.3 LTS Welcome to the Ubuntu Server! vagrant@lucid64:~$ 9
  • 10. Vagrantfile Vagrant::Config.run do |config|   config.vm.box = "lucid64"   config.vm.forward_port 8080, 8080   config.vm.share_folder("webdev","/var/www","../webapp", :extra => "uid=33")   config.vm.provision :chef_solo do |chef|      chef.cookbooks_path = "../../cookbooks"      chef.add_recipe "nginx"      chef.add_recipe "php"      chef.add_recipe "php::module_xdebug"      chef.add_recipe "symfony"      chef.add_recipe "website::vagrant"      chef.json.merge!({         :environment => {           :symfony => {             :environment => 'dev',             :debug => true         }       }     })   end end --verbose: https://gist.github.com/2462747 10
  • 15. Work in progress • Jenkins Tests in Vagrantbox • Directory-Sharing bei Vagrant: Wahl zwischen Pest und Cholera vboxfs ist doof. nfs auch. • xdebug hakelig • Dokumentation teilweise spärlich • Interaktion von aussen mit der Vagrantbox nervig vagrant ssh -c ‘sudo sudo -u www-data ant phpunit‘ 15
  • 16. Sinnvoll? • Einarbeitungszeit minimal • Hemmschwelle „Umgebungsreset“ klein • Gleicher Stand in allen Projekten • Änderungen am Systemsetup extrem einfach umsetzbar • Live-Infrastruktur-Setup in 15 Minuten runderneuert Auto-Heal! 16
  • 17. Demo, Fragen? http://www.opscode.com/chef/ http://vagrantup.com/ http://www.scalarium.com/ https://github.com/digitalpioneers/public-cookbooks http://digitalpioneers.de/jobs/ 17