Closing the gap between Distros(devs) and their Users(ops)

34
Closing the gap Closing the gap between Distros (devs) between Distros (devs) and their Users (ops) and their Users (ops) Kris Buytaert @krisbuytaert

Transcript of Closing the gap between Distros(devs) and their Users(ops)

Page 1: Closing the gap between Distros(devs) and their Users(ops)

Closing the gap Closing the gap between Distros (devs) between Distros (devs) and their Users (ops)and their Users (ops)

Kris Buytaert

@krisbuytaert

Page 2: Closing the gap between Distros(devs) and their Users(ops)

Kris BuytaertKris Buytaert● 20+ years of Linux System Administration20+ years of Linux System Administration

● Release manager of upstream open source Release manager of upstream open source software (back in 2001)software (back in 2001)

● Assisting organisations in deploying software , Assisting organisations in deploying software , better, faster, stronger,better, faster, stronger,

● Slackware, SLS, RedHat, Debian, Suse, Fedora, Slackware, SLS, RedHat, Debian, Suse, Fedora, RHEL, CentOS, SLES, UbuntuRHEL, CentOS, SLES, Ubuntu

● Busy building stufBusy building stuf

Page 3: Closing the gap between Distros(devs) and their Users(ops)

devops =~C(L)AMSdevops =~C(L)AMS● CultureCulture

● (Lean)(Lean)

● AutomationAutomation

• Build, Deploy, Package,ConfigureBuild, Deploy, Package,Configure

● MeasurementMeasurement

● SharingSharing

Damon Edwards and John WillisDamon Edwards and John Willis

Page 4: Closing the gap between Distros(devs) and their Users(ops)

Culture,Culture,automation, automation,

Measturement,Measturement,

sharingsharing

Page 5: Closing the gap between Distros(devs) and their Users(ops)

How I illustrate dev-oopsHow I illustrate dev-oops● ““Put this Code Live, here's a tarball” NOW! Put this Code Live, here's a tarball” NOW!

● What dependencies ?What dependencies ?

● No machines available ?No machines available ?

● What database ?What database ?

● Security ?Security ?

● High Availability ? High Availability ?

● Scalability ?Scalability ?

● My computer can't install this ?My computer can't install this ?

Page 6: Closing the gap between Distros(devs) and their Users(ops)

How I illustrate distro-How I illustrate distro-oopsoops

● We've introduced “XYZ” in the releaseWe've introduced “XYZ” in the release

● What where .. What where ..

• Shit just broke ..Shit just broke ..

• All tests gone redAll tests gone red

• That's a major refactorThat's a major refactor

• 6 renamed packages and diferent defaults6 renamed packages and diferent defaults

• Where's the disable buttonWhere's the disable button

Page 7: Closing the gap between Distros(devs) and their Users(ops)

Root CauseRoot Cause● Ops are to busy fixing … Ops are to busy fixing …

● Someone else will react to this .. this is “trivial”Someone else will react to this .. this is “trivial”

● They can't be this … They can't be this …

● No trivial feedback loopNo trivial feedback loop

● Ops Ops folks are not involved in the communitiesOps Ops folks are not involved in the communities

● Is your community, your userbase ? Is your community, your userbase ?

Page 8: Closing the gap between Distros(devs) and their Users(ops)

Your Team

Your community : Power users, evangelists contributors

Upstream

Users Users active in other Open Source Communities

Your Customers ?

Page 9: Closing the gap between Distros(devs) and their Users(ops)

Your Team

Your active vocal usersaka community

Upstream

Users Users active in other Open Source Communities

Difer

ent U

se C

ases

,

Difer

ent N

eeds

Page 10: Closing the gap between Distros(devs) and their Users(ops)

Culture, Culture,

Automation,Automation,Measurement,Measurement,

SharingSharing

Page 11: Closing the gap between Distros(devs) and their Users(ops)

Launch all deamonsLaunch all deamons● Because in a clustered setup I want the Because in a clustered setup I want the

daemon running only on the node my CRM tells daemon running only on the node my CRM tells it to.it to.

● Because I first want to reconfigure that service Because I first want to reconfigure that service etc before you launch itetc before you launch it

● Or I`m building a containerOr I`m building a container

● Mostly aimed at single server setups :(Mostly aimed at single server setups :(

Page 12: Closing the gap between Distros(devs) and their Users(ops)

Idea Idea ● apt-get install vs apt-get runapt-get install vs apt-get run

● yum install vs yum runyum install vs yum run

Page 13: Closing the gap between Distros(devs) and their Users(ops)

#packagingsucks#packagingsucks• Really ..Really ..

● Missing upstreamMissing upstream

● Ancient upstreamAncient upstream

● Unneeded dependenciesUnneeded dependencies

● Broken upstreamBroken upstream

● Distro PoliciesDistro Policies

● Packaging is needed Packaging is needed

● Dependencies, tooling, repositoriesDependencies, tooling, repositories

Page 14: Closing the gap between Distros(devs) and their Users(ops)

Languages and PackagingLanguages and Packaging

Page 15: Closing the gap between Distros(devs) and their Users(ops)
Page 16: Closing the gap between Distros(devs) and their Users(ops)
Page 17: Closing the gap between Distros(devs) and their Users(ops)
Page 18: Closing the gap between Distros(devs) and their Users(ops)

CPAN,RubyGems,PIP,...CPAN,RubyGems,PIP,...

Every single language tries to package their Every single language tries to package their libraries,libraries,

Ops people hate those packagesOps people hate those packages

And repackage themAnd repackage them

fpm -s gem -t rpm fpm fpm -s gem -t rpm fpm

Page 19: Closing the gap between Distros(devs) and their Users(ops)

Devs vs ops Devs vs ops ● Getting the latest Getting the latest

versions working on versions working on their dev setuptheir dev setup

● Get that from the Get that from the internet fastinternet fast

● curl http://shaky.li.nk | curl http://shaky.li.nk | sudo /bin/bashsudo /bin/bash

● Works on my machineWorks on my machine

● A reproducableA reproducable

● Shippable Shippable

● ArtifactArtifact

● MaintainabilityMaintainability

Page 20: Closing the gap between Distros(devs) and their Users(ops)

What ops do ..What ops do ..● Deploy ruby in jruby Deploy ruby in jruby

● Software Collections (newer versions)Software Collections (newer versions)

Page 21: Closing the gap between Distros(devs) and their Users(ops)
Page 22: Closing the gap between Distros(devs) and their Users(ops)

What ops do ..What ops do ..● Build a full stack in a chroot Build a full stack in a chroot

• Virtualenv, rbenv, rvmVirtualenv, rbenv, rvm

• Build in containersBuild in containers

Page 23: Closing the gap between Distros(devs) and their Users(ops)

Distros and PackagingDistros and Packaging

Page 24: Closing the gap between Distros(devs) and their Users(ops)

Some DistrosSome Distros● Package unexisting releasesPackage unexisting releases

● Change version numbersChange version numbers

● Make developers hate those distrosMake developers hate those distros

● The distro that once shipped an 2.6 Kernel The distro that once shipped an 2.6 Kernel version of openMosix knows I`m talking about version of openMosix knows I`m talking about them.them.

Page 25: Closing the gap between Distros(devs) and their Users(ops)

Contributing to Distros ?Contributing to Distros ?

Distribution packaging policies are not designed Distribution packaging policies are not designed for people who package softwarefor people who package software

John Vincent, on his blog in 2013John Vincent, on his blog in 2013

Page 26: Closing the gap between Distros(devs) and their Users(ops)

Should this even be in a distro ?Should this even be in a distro ?

● ““What do you mean there is php code in /etc ?”What do you mean there is php code in /etc ?”

● /etc/drupal ?/etc/drupal ?

● Are you kidding me ?Are you kidding me ?

● Just kill that package, don't ever use it again Just kill that package, don't ever use it again and let our jenkins roll our own.and let our jenkins roll our own.

Page 27: Closing the gap between Distros(devs) and their Users(ops)

Hey Distro:Hey Distro:● There is no way you can keep up with the There is no way you can keep up with the

speed of some webapps releasing new speed of some webapps releasing new versions.versions.

● Maybe you shouldn't even tryMaybe you shouldn't even try

Page 28: Closing the gap between Distros(devs) and their Users(ops)

Culture, Culture,

Automation, Automation,

Measurement,Measurement,

SharingSharing

Page 29: Closing the gap between Distros(devs) and their Users(ops)

Distro's do great workDistro's do great work• OBS OBS

• CBS CBS

● Not all of it is known Not all of it is known

Page 30: Closing the gap between Distros(devs) and their Users(ops)

CI for UpstreamCI for Upstream● Engage with upstreamEngage with upstream

● Provide tools for them to build packages easyProvide tools for them to build packages easy

Page 31: Closing the gap between Distros(devs) and their Users(ops)

Who is your user ?Who is your user ?● Junior Software developer who needsJunior Software developer who needs

• Database, webserver etc Database, webserver etc

• Running trivially Running trivially

● Ops guy who needs to deploy , manage and Ops guy who needs to deploy , manage and monitor large inframonitor large infra

Page 32: Closing the gap between Distros(devs) and their Users(ops)

Get your power users involvedGet your power users involved

● More MeetupsMore Meetups

● Lugs are dissapearingLugs are dissapearing

● User Advisory boardUser Advisory board

● Engage them, before they complain, or switch Engage them, before they complain, or switch to another distroto another distro

Page 33: Closing the gap between Distros(devs) and their Users(ops)
Page 34: Closing the gap between Distros(devs) and their Users(ops)

ContactContactKris Buytaert [email protected] Buytaert [email protected]

Further ReadingFurther Reading@krisbuytaert @krisbuytaert http://www.krisbuytaert.be/blog/http://www.krisbuytaert.be/blog/http://www.inuits.eu/http://www.inuits.eu/

Find Inuits inFind Inuits in

Brasschaat,Ghent,Brasschaat,Ghent,Rotterdam,Prague,Rotterdam,Prague,Kiev,BrnoKiev,Brno