DevOps - Good or just DevOops? And what does Chef, Puppet and Azure has got to do with it?

Introduktion

Vi på Microsoft har ganska nyligen i många olika sammanhang börjat prata om DevOps-rollen så tänkte därför att det är passande med en liten DevOps-skola där vi förklarar vad begreppet innebär och vad vi på Microsoft gör för att stötta eventuella DevOps-proffs som vill placera sin infrastruktur i molnet.

Så, vad är DevOps? Som vanligt med hajjpade begrepp som detta finns det många olika förklaringar men i grunden handlar det om att många organisationer och processer inte längre kan eller vill separera på utvecklare och IT-avdelningen, alltså mellan Dev och Ops. I takt med att agila utvecklingsprocesser slagit igenom brett har vi också sett en trend som går mot kortare utvecklingsprojekt med ständiga uppdateringar och extremt snabba utvecklingscykler, något som brukar benämnas som ”continuous deployment” eller ”continuous delivery”.

Processer av det här slaget är en utmaning för många IT-avdelningar.

Att som IT-tekniker med ansvar för att allt ska rulla på, säkert och stabilt, kan det med traditionella IT-processer och verktyg vara svårt att hänga med i det tempo som många utvecklingsavdelningar arbetat upp. Du vill inte som IT-avdelning känna att du är en bromskloss som säger ”Nej”, ”Vänta lite” eller ”Stopp!” hela tiden och det är här DevOps-rollen, DevOps-rörelsen och många av de populära Dev-Ops-verktygen kommer in i bilden.

Som mycket annat nu för tiden handlar det i praktiken om att automatisera sin infrastruktur. För att hinna med i dagens höga tempo kan vi inte längre hantera våra servrar och applikationer manuellt, vi måste jobba snabbare och vi måste eliminera risken för handhavandefel.

DevOps-rollens syfte är att se till att infrastrukturen hänger med och att den gör det så automagiskt det bara går, vår infrastruktur ska kunna programmeras och automatiseras lika mycket som övriga delar av vår programvara.

Än så länge handlar det i praktiken oftast om utvecklare och utvecklingsavdelningar, vana vid att skriva kod, som inser att man nu för tiden även kan programmera sin infrastruktur (speciellt den som ligger i molnet och som utvecklarna ofta själva styr över) men det finns egentligen ingen anledning till att du som IT-tekniker inte ska vara lite proaktiv här och vara den som driver det här arbetet framåt med hjälp av de automatiseringsverktyg som finns ute på marknaden.

DevOps-verktyg

Och med det sagt kan vi ju prata lite om automatiseringsverktyg. Du som läser det här känner förstås redan till saker som Powershell och Orchestrator, men i en annan del av IT-världen har det vuxit fram komplement till våra produkter och två av de mest populära heter Puppet och Chef.

Puppet

Med Puppet (http://puppetlabs.com/) definierar du de olika rollerna i din infrastruktur (webbserver, databasserver, etc.) med Puppets egna språk för just detta. Du kan sen rulla ut det du definierat i din kod och även kontrollera att dina servrar lever upp till dina definitioner och även skapa rapporter som beskriver hur dina servrar mår och hur pass väl de lever upp till dina infrastrukturritningar.

Här är en bild:

Chef

Chef (http://www.getchef.com/) försöker lösa samma uppgift på ungefär samma sätt. Du modellerar din infrastruktur och konfigurationen av dina applikationer med kod. Du behandlar din infrastruktur som vilken kod som helst och kan då t.ex. börja jobba med versionshantering av din infrastruktur. Chef jobbar med vad som kallar för ”cookbooks” och ”recipes” som du skriver i språket Ruby och som definierar och automatiserar din infrastruktur. Det är enkelt att dela med sig av sina ”recept” och det har på det sättet vuxit fram ett ”community” där man delar med sig av sina infrastrukturslösningar. Mycket av det du vill bygga har någon annan redan byggt och du kan då använda deras recept istället för att skriva egna.

Här kommer en bild:

Puppet, Chef och Azure

Och nu till en rolig avslutning. Vi på Microsoft erbjuder två saker som gör det superenkelt att komma igång med både Puppet och Chef.

1. En färdig mall i Azure för en Puppet Master-server:

2. Två små kryssrutor för att automatiskt installera en Puppet- och/eller en Chef-agent på dina virtuella maskiner:

Så! Det finns inte längre några ursäkter för att låta dina programmerarkompisar ha allt det roliga. Ut och testa! Lär dig! Implementera! Jobba smartare!

Powershell Desired State Configuration

Ja just det, en sak till: Det mesta av det Puppet och Chef gör kan du förstås lösa med ”Powershell Desired State Configuration” så glöm inte det! Läs mer och lär dig om ”PowerShell DSC” här: http://technet.microsoft.com/en-us/library/dn249912.aspx

Bra eller Oops?

På Microsoft har vi i många år förespråkat automatisering framför manuellt arbete när det kommer till hanteringen av din infrastruktur så DevOps-tänket är på många sätt inget nytt även om de verktyg och processer vi har att jobba med självklart är bättre nu än tidigare. Jag tycker personligen att det är extremt roligt att vi med Azure fortsätter framåt i det öppna och inkluderande spåret och släpper in flera smarta och mogna verktyg som underlättar för alla som vill placera sin infrastruktur i vårat moln.

Den enda kritiken jag sett mot den här rörelsen är ett blogginlägg (http://jeffknupp.com/blog/2014/04/15/how-devops-is-killing-the-developer/) som enligt mig missförstått hela grejen och tror att det handlar om att kasta Ops-ansvaret på våra stackars utvecklare istället för att låta folk specialisera sig och hantera det man gör bäst. Det här är enligt mig ett enormt feltänk, det handlar ju inte inte om att någon ska göra mer jobb, det handlar om att tillsammans se till att automatisera och se till att folk kan fokusera på roligare grejen än manuell administration av servrar.