Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ops for Devs

Ops for Devs

A quick introduction to the "devops" buzzword for those that don't like dealing with servers.

Peter Sobot

May 03, 2013
Tweet

More Decks by Peter Sobot

Other Decks in Programming

Transcript

  1. OPS
    FOR DEVS

    View Slide

  2. View Slide

  3. OPS
    FOR DEVS

    View Slide

  4. Developers like to write
    CODE

    View Slide

  5. Developers hate dealing with
    SERVERS

    View Slide

  6. happiness

    View Slide

  7. Hardware
    happiness

    View Slide

  8. Operating System
    Hardware
    happiness

    View Slide

  9. Configuration
    Operating System
    Hardware
    happiness

    View Slide

  10. Framework
    Configuration
    Operating System
    Hardware
    happiness

    View Slide

  11. Business Logic
    Framework
    Configuration
    Operating System
    Hardware
    happiness

    View Slide

  12. LIFE WOULD BE
    AMAZING
    IF WE ONLY HAD TO WORRY ABOUT
    BUSINESS LOGIC

    View Slide

  13. BUT

    View Slide

  14. WE HAVE TO CARE
    ABOUT SERVERS
    bugs in production!
    version mismatches!
    kernel issues!
    hardware failures!
    security holes!
    architecture mismatches!
    missing hardware instructions!
    virtualization bugs!
    performance drops!
    server bills! client latency!
    bandwidth costs!
    internet!!1!
    omg hakx!

    View Slide

  15. how do we
    make servers
    look like code?

    View Slide

  16. View Slide

  17. full-featured
    Turing-complete
    very well supported

    View Slide

  18. class nginx {
    package { 'nginx': ensure => latest }
    service { 'nginx': ensure => running }
    file { '/etc/nginx/nginx.conf':
    ensure => present,
    source => 'puppet:///modules/nginx/nginx.conf',
    notify => Service['nginx'],
    }
    }

    View Slide

  19. configuration
    becomes code

    View Slide

  20. puppet code!
    app code!

    View Slide

  21. useful for
    one server

    View Slide

  22. invaluable for
    many servers

    View Slide

  23. also good for
    zero servers

    View Slide

  24. View Slide

  25. magical Vagrantfile

    View Slide

  26. Vagrant.configure("2") do |config|
    config.vm.box = "precise64"
    config.vm.box_url = "http://files.vagrantup.com/precise64.box"
    config.vm.network :forwarded_port, guest: 80, host: 8080
    config.vm.network :forwarded_port, guest: 443, host: 8443
    config.vm.synced_folder "./", "/var/www/"
    config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
    end
    config.vm.provision :puppet do |puppet|
    puppet.module_path = "puppet/modules"
    puppet.manifests_path = "puppet"
    puppet.manifest_file = "wubmachine.pp"
    end
    end
    choose any OS
    use your Puppet code
    share folders
    map
    ports

    View Slide

  27. View Slide

  28. puppet code environment
    =

    View Slide

  29. puppet code environment
    =
    using the same using the same

    View Slide

  30. dev/prod
    parity

    View Slide

  31. need ?
    mysql
    postgres
    memcached
    redis
    rabbitmq
    cassandra
    nginx
    buzzword
    buzzword
    buzzword

    View Slide

  32. capture in
    Puppet code

    View Slide

  33. test with
    Vagrant

    View Slide

  34. deploy with
    confidence

    View Slide

  35. setting up servers becomes
    trivial

    View Slide

  36. so when this happens...

    View Slide

  37. View Slide

  38. questions?
    @psobot

    View Slide