+ All Categories
Home > Technology > DevOps for PHP

DevOps for PHP

Date post: 08-May-2015
Category:
Upload: mayflower-gmbh
View: 4,376 times
Download: 1 times
Share this document with a friend
Description:
PHP
83
© Mayflower GmbH 2010 DevOps for PHP Florian Anderiasch I October 28, 2011
Transcript
Page 1: DevOps for PHP

© Mayflower GmbH 2010

DevOps for PHP

Florian Anderiasch I October 28, 2011

Page 2: DevOps for PHP

Mayflower GmbH I 2

DeveloperEx-AdminDevOp?

„I rant a lot“

@anderiaschstay in touch!

Page 3: DevOps for PHP

Mayflower GmbH I 3

Do you knowDevOps?

Page 4: DevOps for PHP

Mayflower GmbH I 4

„These are cool tools!“=>

„I'm doing DevOps now!“

Page 5: DevOps for PHP

Mayflower GmbH I 5

It's not aboutthe tools!

Page 6: DevOps for PHP

Mayflower GmbH I 6

It's about the culture!

Page 7: DevOps for PHP

Mayflower GmbH I 7

Page 8: DevOps for PHP

Mayflower GmbH I 8

Coming from WebOps

We often don't have muchoperations personnel.

LAMP stack is our home

Page 9: DevOps for PHP

Mayflower GmbH I 9

Learn from each other!

Work together!

Page 10: DevOps for PHP

Mayflower GmbH I 10

From ops to dev:repeatability

change managementmonitoring

provisioning

Page 11: DevOps for PHP

Mayflower GmbH I 11

From dev to ops:unit tests

version controlagile methods

Page 12: DevOps for PHP

Mayflower GmbH I 12

Why DevOps?

Page 13: DevOps for PHP

Mayflower GmbH I 13

How manyreleases per

year?

Page 14: DevOps for PHP

Mayflower GmbH I 14

Some peopledo up to

60 per day

Page 15: DevOps for PHP

Mayflower GmbH I 15

We're strivingfor one per day.

For now.

Page 16: DevOps for PHP

Mayflower GmbH I 16

We've come a long way

Page 17: DevOps for PHP

Mayflower GmbH I 17

Development in the dark ages

Page 18: DevOps for PHP

Mayflower GmbH I 18

Golden ImageVMware/KVM

Page 19: DevOps for PHP

Mayflower GmbH I 19

Copying files over FTPto a shared host

Page 20: DevOps for PHP

Mayflower GmbH I 20

rsync /vcs checkout

Page 21: DevOps for PHP

Mayflower GmbH I 21

Page 22: DevOps for PHP

Mayflower GmbH I 22

Hardware= Software= Configuration

Page 23: DevOps for PHP

Mayflower GmbH I 23

OK, tools are important.

Page 24: DevOps for PHP

Mayflower GmbH I 24

Bad news:they love ruby

Page 25: DevOps for PHP

Mayflower GmbH I 25

Good news:There are DSLs

Page 26: DevOps for PHP

Mayflower GmbH I 26

But in the end:It works

Page 27: DevOps for PHP

Mayflower GmbH I 27

Going from:do X or YTowards:

I want state Z

Page 28: DevOps for PHP

Mayflower GmbH I 28

Don't reinventthe wheel.

Page 29: DevOps for PHP

Mayflower GmbH I 29

puppet modules

apache, nginx, varnishphp, ruby, tomcat

mysql, pgsql, memcache

Page 30: DevOps for PHP

Mayflower GmbH I 30

Monitoring

Page 31: DevOps for PHP

Mayflower GmbH I 31

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

Page 32: DevOps for PHP

Mayflower GmbH I 32

Page 33: DevOps for PHP

Mayflower GmbH I 33

I know how I wantmy servers to look like

Let's replicate thatfor development

as close as possible

Vagrant

Page 34: DevOps for PHP

Mayflower GmbH I 34

Based on VirtualBox

automatically create VMspuppet or chef included

Vagrant

Page 35: DevOps for PHP

Mayflower GmbH I 35

Fully versioned configs

On-Demand creation

Developer Self Service

Vagrant

Page 36: DevOps for PHP

Mayflower GmbH I 36

Getting startedin 3 easy steps

Page 37: DevOps for PHP

Mayflower GmbH I 37

Manage your setup with Vagrant and

VeeWee(needs VirtualBox and Ruby)

Page 38: DevOps for PHP

Mayflower GmbH I 38

$ gem install vagrant $ gem install veewee $ vagrant basebox templates

$ vagrant basebox define 'natty' \ 'ubuntu-11.04-server-amd64' $ vagrant basebox build 'natty' $ vagrant basebox export natty $ vagrant box add 'natty' 'natty.box'

Page 39: DevOps for PHP

Mayflower GmbH I 39

http://vagrantbox.es

Page 40: DevOps for PHP

Mayflower GmbH I 40

$ 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:~$

Page 41: DevOps for PHP

Mayflower GmbH I 41

Manage your configuration

Page 42: DevOps for PHP

Mayflower GmbH I 42

Page 43: DevOps for PHP

Mayflower GmbH I 43

Chef or Puppet

Page 44: DevOps for PHP

Mayflower GmbH I 44

- Configuration as Code- Client-only or Client-Server setup- backed by companies- officially supported by Amazon- tried and tested- good documentation- good, vibrant communities

Page 45: DevOps for PHP

Mayflower GmbH I 45

- Chef is ruby code, puppet has a DSL- puppet has the bigger community- puppet has more documentation- but chef is catching up- puppet: europe, chef: USA- chef is more flexible- if you puppet, you don't know ruby and vice versa

Page 46: DevOps for PHP

Mayflower GmbH I 46

- both know current configuration- you define your nodes (servers)- lots of community cookbooks/modules- easy to extend- templates- providers as platform abstractions (e.g. apt-get/ports/yum)

Page 47: DevOps for PHP

Mayflower GmbH I 47

There's no „better“ tool.

But we prefer puppet. Less Ruby ;)

Page 48: DevOps for PHP

Mayflower GmbH I 48

user { 'florian': ensure => present, uid => '507', gid => 'admin', shell => '/bin/bash', home => '/home/florian', managehome => true,}

Page 49: DevOps for PHP

Mayflower GmbH I 49

user „florian“ do username „florian“ password „$1$P$WXmqrQEVj88fVTHevErxq.“ shell „/bin/bash“ system true supports :manage_home => trueend

Page 50: DevOps for PHP

Mayflower GmbH I 50

Back to Vagrant

Page 51: DevOps for PHP

Mayflower GmbH I 51

Vagrant::Config.run do |config| config.vm.box = „natty“end

Page 52: DevOps for PHP

Mayflower GmbH I 52

$ cat VagrantfileVagrant::Config.run do |config| config.vm.provision :puppet, :module_path => „modules“ do |puppet| puppet.manifests_path = „manifests“ puppet.manifest_file = „development.pp“ end

config.vm.define :web do |web_config| web_config.vm.box = „natty“ web_config.vm.host_name = „webserver01“ web_config.vm.network „33.33.33.10“ web_config.vm.forward_port „http“,80,8080 web_config.vm.port „ssh“,22,2222 web_config.vm.share_folder „v-data“,“/srv/www“,“../silex-demo“ endend

Page 53: DevOps for PHP

Mayflower GmbH I 53

$ cat manifests/development.ppimport „classes/*“

node „webserver01“ { include web}

node „dbserver01“ { include db}

node „ciserver01“ { include ci}

Page 54: DevOps for PHP

Mayflower GmbH I 54

$ cat manifests/classes/web.ppclass web inherits basenode { include apache include apache::php apache::vhost { 'silex-demo.local': port => '80', docroot => '/srv/www/docroot', }

package { ['mysql-client','php5-cli',...]: ensure => present, }}

Page 55: DevOps for PHP

Mayflower GmbH I 55

$ cat manifests/classes/ci.ppclass ci inherits basenode { include apache include apache::php exec { 'pear-autodiscover': command => '/usr/bin/pear config-set \auto_discover 1', } package{ \['pear.phpunit.de/PHP_CodeBrowser',...]: ensure => latest, provider => 'pear', require => Exec['pear-autodiscover'], }}

Page 56: DevOps for PHP

Mayflower GmbH I 56

Make the configurationpart of your source code

Page 57: DevOps for PHP

Mayflower GmbH I 57

.|-- application|-- data|-- docs|-- library|-- public|-- scripts| |-- jobs| |-- build| \-- configuration| |-- Vagrantfile| |-- manifests| \-- modules|-- temp\-- tests

Page 58: DevOps for PHP

Mayflower GmbH I 58

Why did I do that?

Page 59: DevOps for PHP

Mayflower GmbH I 59

SimpleFailsafe

Fast SetupRepeatableConsistent

Self-Service

Page 60: DevOps for PHP

Mayflower GmbH I 60

No more golden images!

Page 61: DevOps for PHP

Mayflower GmbH I 61

No more USB sticks!

Page 62: DevOps for PHP

Mayflower GmbH I 62

Just one directoryin your vcs

Page 63: DevOps for PHP

Mayflower GmbH I 63

Machine Life Cycle Management:

Foreman

Page 64: DevOps for PHP

Mayflower GmbH I 64

A frontend for puppetShows the system inventory

Create new machinesProvisioning

Page 65: DevOps for PHP

Mayflower GmbH I 65

Page 66: DevOps for PHP

Mayflower GmbH I 66

Page 67: DevOps for PHP

Mayflower GmbH I 67

I want more!Like 20+

Page 68: DevOps for PHP

Mayflower GmbH I 68

McCloud

wrapper around Vagrant and Fog

transparent local& cloud usage

Page 69: DevOps for PHP

Mayflower GmbH I 69

I want more!Like 500...

Page 70: DevOps for PHP

Mayflower GmbH I 70

mCollective

ssh-for-loop on steroids

fast management for loads of servers

uses puppet/facter, MQ-based

Page 71: DevOps for PHP

Mayflower GmbH I 71

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

Page 72: DevOps for PHP

Mayflower GmbH I 72

DevOps@Mayflower

Page 73: DevOps for PHP

Mayflower GmbH I 73

1-2 „admins“per team

Page 74: DevOps for PHP

Mayflower GmbH I 74

Operationsand

Development

Page 75: DevOps for PHP

Mayflower GmbH I 75

Working hand in handwith company admins

Page 76: DevOps for PHP

Mayflower GmbH I 76

Got root?Yes.

Page 77: DevOps for PHP

Mayflower GmbH I 77

1+n puppetmaster

1 centraln teams

Page 78: DevOps for PHP

Mayflower GmbH I 78

Example setup:puppetmaster

10 developer VMsJenkins

4x Staging (eucalyptus)4x Live (Amazon)

Page 79: DevOps for PHP

Mayflower GmbH I 79

More tools:gitorious

eucalyptus cloudproxmox

Page 80: DevOps for PHP

Mayflower GmbH I 80

In the works:Vagrant

Scrum => KanbanPuppet + Nagios

Page 81: DevOps for PHP

Mayflower GmbH I 81

Questions?

Page 82: DevOps for PHP

29.10.11 Mayflower GmbH 82

Thanks for listening!

Contact Florian Anderiasch

[email protected]

+49 89 242054 1134

@anderiasch

Mayflower GmbH

Mannhardtstrasse 6

80538 München

Page 83: DevOps for PHP

Mayflower GmbH I 83

Images

Domo-Kun(5)http://www.hawaiikawaii.net/2011/domo-kun-wallpaper-on-my-desktop/

Domo-Kun(6), Nina Helmer, CC-BY-NC-NDhttp://www.flickr.com/photos/origami_potato/3242174542/

Clouds (21), John Mueller, CC-BY-NC-NDhttp://www.flickr.com/photos/johnmueller/52621490/

Domo-Kun (23)http://i572.photobucket.com/albums/ss163/xxLoveorDie54xx/OMG-Its-Domo-kun.jpg

puppet-dashboard (31)http://puppetlabs.com/puppet/related-projects/dashboard/


Recommended