70
© 2010 Mayflower GmbH DevOps für PHP International PHP Conference Spring Edition 2011 Montag, 30. Mai 2011

international PHP2011_J.Hartmann_DevOps für PHP

Embed Size (px)

Citation preview

Page 1: international PHP2011_J.Hartmann_DevOps für PHP

© 2010 Mayflower GmbH

DevOps für PHPInternational PHP Conference Spring Edition 2011

Montag, 30. Mai 2011

Page 2: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 2

Montag, 30. Mai 2011

Page 3: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 3

Montag, 30. Mai 2011

Page 4: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 4

2007

Montag, 30. Mai 2011

Page 5: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 5

http://www.flickr.com/photos/johnmueller/52621490/

Montag, 30. Mai 2011

Page 6: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 6

Montag, 30. Mai 2011

Page 7: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 7

http://www.flickr.com/photos/johnmueller/52621490/

Montag, 30. Mai 2011

Page 8: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 8

Montag, 30. Mai 2011

Page 9: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 9

Montag, 30. Mai 2011

Page 10: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 10

Montag, 30. Mai 2011

Page 11: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 11

Montag, 30. Mai 2011

Page 12: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 12

Nicht schnell.

Montag, 30. Mai 2011

Page 13: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 13

Nicht schnell.

Montag, 30. Mai 2011

Page 14: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 14

auch schnell.

Montag, 30. Mai 2011

Page 15: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 15

Montag, 30. Mai 2011

Page 16: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 16

Montag, 30. Mai 2011

Page 17: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

Das bin ich.

Johann-Peter Hartmann

@[email protected]: Freenode, EFNetjohann__

Montag, 30. Mai 2011

Page 18: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

Und das auch.

Johann-Peter HartmannPHP Developer CTO of 65 developersLikes PHP, Agility, System Administration and Security

Montag, 30. Mai 2011

Page 19: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

Wer seid Ihr?

Developer?Sysadmin?

Montag, 30. Mai 2011

Page 20: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

(Zeit schinden durch Publikumsfragen)

Agile?Scrum?

Montag, 30. Mai 2011

Page 21: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

(noch mehr Zeit schinden)

Releases / Jahr?

Montag, 30. Mai 2011

Page 22: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

(... ich muss mich beeilen)

Cloud?

Montag, 30. Mai 2011

Page 23: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 23

==

Hardware = Software

Montag, 30. Mai 2011

Page 24: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 24

API

Montag, 30. Mai 2011

Page 25: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 25

Immer noch Hardware(nur woanders)

Montag, 30. Mai 2011

Page 26: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 26

2009

Montag, 30. Mai 2011

Page 27: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 27

Hardware = Software = Configuration

Montag, 30. Mai 2011

Page 28: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 28

Montag, 30. Mai 2011

Page 29: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 29

Dokumentationsgetrieben

DomainSpecificLanguage

Montag, 30. Mai 2011

Page 30: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 30

PuppetMaster

PuppetD

Montag, 30. Mai 2011

Page 31: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 31

Mach ma hin

So Isset.

Montag, 30. Mai 2011

Page 32: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 32

Facter

Montag, 30. Mai 2011

Page 33: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 33

class web { package {“httpd“: ensure => present }

file {“/etc/httpd/conf/httpd.conf“: owner => root, group => root, mode => 664, source => puppet:///modules/apache/httpd.conf, require => Package[“httpd“], notify => Service[“httpd“] }

service {“httpd“: ensure => running, enable => true, require => File[“/etc/httpd/conf/httpd.conf“] }}

node “web01.mydomain.test“ { include web}

Montag, 30. Mai 2011

Page 34: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

Puppet-Modules

34

• apache, nginx, varnish• php, ruby, tomcat• mysql, postgresql, memcache, ejabberd• heartbeat, dns

(gibt eigentlich für fast alles etwas)

Montag, 30. Mai 2011

Page 35: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 35

Monitoring

Montag, 30. Mai 2011

Page 36: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 36

Quelle: http://www.puppetlabs.com/puppet/related-projects/dashboard/

Montag, 30. Mai 2011

Page 37: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 37

Montag, 30. Mai 2011

Page 38: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

Vagrant

38

Ich weiss, wie meine Server aussehen.

Das Development soll maximal ähnlich sein.

Montag, 30. Mai 2011

Page 39: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

Vagrant

39

VirtualBox-basierte automatische Erzeugung von VMs mit Puppet/Chef

Montag, 30. Mai 2011

Page 40: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

Vagrant

40

Voll versioniert!On-Demand ErzeugungDeveloper-Self-Service

Montag, 30. Mai 2011

Page 41: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

$ gem install vagrant$ vagrant box add maverick64 http://mathie-vagrant-boxes.s3.amazonaws.com/maverick64.box$ mkdir maverick_demo$ cd maverick_demo$ vagrant init maverick64$ vagrant up$ vagrant sshvagrant@maverick64:~$

41

Montag, 30. Mai 2011

Page 42: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

Vagrant-Cluster mit 20 Maschinen lokal?

42

Montag, 30. Mai 2011

Page 43: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

McCloud

43

Wrapper around Vagrant and Fog

Transparent local & cloud usage

https://github.com/jedi4ever/mccloud

Montag, 30. Mai 2011

Page 44: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

Und wenn ich 500 Maschinen will?

44

Montag, 30. Mai 2011

Page 45: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

mCollective

45

ssh-for-loop on steroids

fast management for loads of servers

uses puppet/facter, MQ-based

Montag, 30. Mai 2011

Page 46: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 46

$ mc-package -W "architecture=x86" status apache * [ ============================================================> ] 10 / 10 host01.example.com version = apache-2.2.9-7host02.example.com version = apache-2.2.9-7host03.example.com version = apache-2.2.9-7host04.example.com version = apache-2.2.9-7host05.example.com version = apache-2.2.9-7host06.example.com version = apache-2.2.9-7host07.example.com version = apache-2.2.9-7host08.example.com version = apache-2.2.9-7host09.example.com version = apache-2.2.9-7host10.example.com version = apache-2.2.9-7 ---- package agent summary ---- Nodes: 10 / 10 Versions: 10 * 0.25.5-1.el5 Elapsed Time: 1.03 s

Montag, 30. Mai 2011

Page 47: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 47

The most dangerous vegetable on earth!

Montag, 30. Mai 2011

Page 48: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

• eigentlich ein BDD-Tool • trotzdem Bestandteil in DevOps• und Bestandteil in Lean Startup• cucumber-nagios• cucumber-puppet

Montag, 30. Mai 2011

Page 49: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

Feature: Manualsearch In order to find an article As an developer I want to use the search function Scenario: Search for bdd and check resulting page Given I go to "http://it-republik.de/php/" When I fill in "search_itr" with "bdd" And I click "search2" Then I should see "Suche"

49

Montag, 30. Mai 2011

Page 50: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

Given /^I go to "([^"]*)"$/ do |url| visit urlend

When /^I fill in "([^"]*)" with "([^"]*)"$/ do |field, value| fill_in field, :with => valueend

When /^I click "([^"]*)"$/ do |button| click_button(button)end

Then /^I should see "([^"]*)"$/ do |text| response_body.should include(text)end

50

Montag, 30. Mai 2011

Page 51: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

johann$ cucumberFeature: Manualsearch In order to find an article As an developer I want to use the search function

Scenario: Search for bdd and check resulting page # features/search.feature:5 Given I go to "http://it-republik.de/php/" # features/step_definitions/search_steps.rb:1 When I fill in "search_itr" with "bdd" # features/step_definitions/search_steps.rb:5 And I click "search2" # features/step_definitions/search_steps.rb:9 Then I should see "Suche" # features/step_definitions/search_steps.rb:13

1 scenario (1 passed)4 steps (4 passed)0m1.615s

51

Montag, 30. Mai 2011

Page 52: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

Feature: Install inetd In order to serve the web the httpd service must be installed

Scenario: Setup httpd Given a node of class “web“ When I compile the catalog Then package “httpd“ should be “installed“ Then there should be a resource “Service[httpd]“ And the service should have “enable“ set to “true“ And State should be “running“ And the service should require “Package[httpd]“

52

Montag, 30. Mai 2011

Page 53: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 53

Montag, 30. Mai 2011

Page 54: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 54

Das verstehe sogar ich! Und ich bin seit 20 Jahren im Marketing!

Montag, 30. Mai 2011

Page 55: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 55

Unit TestsAcceptance TestsMetricsCoding Style

... you get the idea.

Montag, 30. Mai 2011

Page 56: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 56

... and even more ...

Packaging ReleasingDeployment

Montag, 30. Mai 2011

Page 57: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 57

Montag, 30. Mai 2011

Page 58: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 58

Montag, 30. Mai 2011

Page 59: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

WetwareRefactoring

59

Montag, 30. Mai 2011

Page 60: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 60

Work together

Montag, 30. Mai 2011

Page 61: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

Own together

61

Montag, 30. Mai 2011

Page 62: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 62

Eat together

http://www.flickr.com/photos/vilavelosa/3815032524/

Montag, 30. Mai 2011

Page 63: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I

Plan together

63

Montag, 30. Mai 2011

Page 64: international PHP2011_J.Hartmann_DevOps für PHP

Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 64

Mayflower DevOpsification

Montag, 30. Mai 2011

Page 65: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

DevOpsification of Mayflower (Wetware)

1-2 Admins pro Team–Admin & Development-Aufgaben–Vollzeit dem Team zugeordnet

Montag, 30. Mai 2011

Page 66: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

DevOpsification of Mayflower (Wetware)

Enge Zusammenarbeit mit zentralem Admin

Volle Root-Rechte auf Developer-Infrastruktur

Montag, 30. Mai 2011

Page 67: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

DevOpsification of Mayflower (Software)

1+n Puppet-Master–zentraler Firmenmaster–Teammaster pro Team / Projekt–Firmenmaster ist Startpunkt der Teamkonfiguration

Montag, 30. Mai 2011

Page 68: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

DevOpsification of Mayflower (Software)

Beispiel-Setup:–lokale Developer-VM–CI-Deployment-Server in der DMZ–Staging in der private Cloud–Beta in Amazon-Cloud–Production bei Amazon

Montag, 30. Mai 2011

Page 69: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

DevOpsification of Mayflower (Software)

lokaler GIT- / Gitorious-Server

Eucalyptus-Cloud in der DMZ- im Self-Service!

Montag, 30. Mai 2011

Page 70: international PHP2011_J.Hartmann_DevOps für PHP

Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

DevOpsification of Mayflower (Future)

Vagrant für das DevelopmentScrum => KanBan

Puppet Nagios

Montag, 30. Mai 2011