Rapport fra årets «Configuration Management Camp»

Configuration management camp [1] avholdes årlig i Ghent rett utenfor Brussel, Belgia. Konferansen tar opp aktuelle tema om verktøy, metodikk og organisering av utvikling og drift av storskala infrastruktur, med fokus på fri progamvare.  I 2015 deltok undertegnede både som foredragsholder [2] og vanlig deltaker. Det er ingen deltakeravgift på denne konferansen og relativt billig med fly og hotell, så det er deltakelse gir høy nytteverdi i forhold til kostnad.

Konferansen gikk over to dager og hadde åtte parallelle spor (ett for hvert konfig-verktøy, hovedspor, samt "misc"-spor), noe som gjorde det hele ganske intensivt og ikke så rent lite vanskelig å velge hvor man skulle være til enhver tid. Helst burde man kunne delt seg i to eller tre. 

Det hele åpnet mandag 2. Februar med keynote fra Mitchell Hashimoto, grunnlegger av Hashicorp [3]  og oppfinner av Vagrant [4]. Mitchell tok et historisk tilbakeblikk på hvordan datasentere ble håndtert tidlig på 2000-tallet, og utviklingen frem til dagens container-baserte virkelighet med høy grad av dynamikk og fokus på endringshyppighet og elastisitet i tjenestetilbudet. Rundt midten av 2000-tallet kom det et skifte hvor det ble mer fokus på sikring av tilstand på server-noder i stor skal og i løpet av noen år ble standard konfigurasjonsstyring av servere med verktøøy som Puppet, Cfengin og Chef en naturlig valg for å oppnå nettopp dette. Rundt 2011 begynte man å ane begrensninger i verktøyene etterhvert som infrastruktur ble mer og mer flyktig og dynamisk. I dag er en stor del av verdens basis IT-infrastruktur API-drevet, flyktig og dynamisk. De "tradisjonelle" verktøyene har fortsatt en viktig rolle å spille for sikring av stabilitet og forutsigbarhet i grunnleggende nivående av infrastrukturen, men det er behov for andre typer verktøy til å håndtere og muliggjøre endringstakten til store distribuerte web-applikasjoner.

Luke Kanies (Puppet founder) said once "There is no future with less servers". There is no future with less servers but there is a future where you are running less of them. Specially with PaaS. The bottom layer is the API. - Mitchell Hashimoto

Neste sesjon var ved Andrew Clay Schafer fra Pivotal [5], et spin-off-selskap fra VMware/EMC som leverer bl.a. Cloundfoundry [6], en PaaS-løsning. Denne sesjonen handlet om BOSH [7] et verktøy som Pivotal bruker for masse-orkestrering av containerapplikasjoner. Hovedbudskapet var at det kan gjøre mye bra, men at læringskurven ser omtrent slik ut:

Neste post på mandagens program var paneldebatt hvor grunnleggerene av de forskjellig verktøyene diskuterte hva konfigurasjonsstyring er og hvilken rolle begrepet skal bety i fremtiden og hvordan verktøy må tilpasses (eller nye opprettes) i en ny virkelighet som er radikalt annerledes enn tidligere. Mark Burgess var dessverre ikke med dette året.

I lunchen møtte jeg Alan Robertson som grunnla «The assimiliation project». Han fortalte at det ikke var mye nytt i foredraget han skulle holde i forhold til videoen jeg allered hadde sett. Det gjorde at jeg prioriterte vekk foredraget hans, uten at det gjør det mindre aktuelt å teste ut programvaren til CMDB-bruk. Alan er på utkikke etter ressurser til prosjektet og vi snakket litt om hvordan vi eventuelt kunne samarbeide. Jeg sa at det er vanskelig å love noe, men at det første jeg ville tatt tak i var signering/sjekksumming av pakker/tarballer.

Etter lunch var det oppstart på de parallelle verktøy-sporene. Jeg deltok på Jonathan Clarke's og Nicolas Charles' presentasjon av Rudder 3.0 and beyond [8]. Rudder er et overbygg over Cfengine som i stor grad fjerner behovet for å kunne Cfengine-kode for å få gjort grunnleggende ting, og som tilbyr utvidet rapportering og intelligente grupperingsmekanismer. Nytt i versjon 3 er forbedret (mer effektiv) innsamling av informasjon fra agenter samt et nytt web-gui med forbedret rapportering og bedre utnyttlse av skjermbildet. Andre nyheter i rudder 3.0: CLI for å styre sentral server, NCF editor for lettere å redigere Cfengine policy samt mulighet for klassifisering av noder via eksterne datakilder (CMDB etc) .

Etter dette tok jeg turen til "misc"-rommet og foredraget «NixOS: Your next favorite server OS» [9]. NixOS kan være interessant som alternativ inne i containere siden det er gir muligheter for å generere et operativsystem som kun trekker med seg nødvendige avhengigheter til applikasjonen som kjører i containeren. NixOS lar deg konfigure hele eller deler av en infrastruktur med et eget deklarativt språk og som bygger de nødvendige komponenten (og bare de) ut fra spesifikasjonen. Mye av fordeln skal være at  man kan gjøre endringer inkrementelt uten stor risiko siden det skal være mulig å rulle tilbake til en tidligere tilstand på en enkel måte. Ulempen med denne tilnærmingen ser ut til at det må påregnes relativt mye ressurser til å gjentatte ombygging av deler av infrastrukturen når det gjøres endringer. Det gjenstår også å se hvor robust denne tilbakerullingen og flere samtidige versjoner av biblioteker og applikasjoner fungerer i stor skala.

Så tok jeg turen over i hovedsporet og så «Why Monitoring Sucks and what Configuration Management can do about it» [10] av James Turnbull. En fargerik opplevelse med mye «rant» av eksisterende overvåkningsverktøy à la Nagios, Zabbix, Icanga (my pga. manglende skalerbarhet) etc, men skuffend lite om hva som skulle være det gylne altrenativet. Et godt poeng han hadde var at majoriteten (68%) av virksomhetene der ut ikke overvåker forretningslogikken, dvs. de tjenestene som skaper verdi i forretningen, men dette er (red. anm.) ikke verktøyene sin feil. Løsningen, om jeg forsto det riktig, er ifølge mr Turnbull å i større grad bygge inn overvåking sammen med konfigurasjonstyring og bygge verifisering av funksjon inn som en del av prvisjoneringen av tjenester/applikasjoner.

Til slutt ruslet jeg tilbake til Rudder/Cfengine rommet for å se på «The Cfengine Road Show», men dessverre utgikk dette pga. tekniske problemer og vi ble istedenfor sittende å snakke med folkene fra Normation og Cfengine. Utviklerne fra Cfengine etterlyste innspill  hvorpå Jonthan fra Normation ønsket seg en tydeligere strategi fra selskapet om hva Cfengine skal være fremover og rollen produktet/verktøyet skal fylle for fremtiden. Undertegnede foreslo et tettere gjensidig samarbeide mellom Normation og Cfengine. Det ble også gitt uttrykk for takknemlighet over at Cfengine over de siste månedene har lagt ned mye energi i bugfixing, noe som alle var enig var nødvendig.

Dag to ble startet med det utmerkede foredraget «Lean Configuration Management» [11] av Jez Humble - Medforfatter av boka «Lean enterprise». Hovedtema her var ikke på teknisk implementasjon eller valg av verktøy, men på kultur, prosesser og en LEAN tilnærming som gjennomsyrer alt. LEAN handler om å skrelle vekk alt som ikke tilfører verdi til organisasjonen og bygge eksperimentdrevne team hvor alt handler om å bygge «minimum viable products»  for så å teste hvorvidt produktet tilfører den forventede verdien (teste hypotesen man på forhånd satte opp), og forkaste ideen så tidlig som mulig dersom hypotesen viser seg å feile. Dette for å frigjøre tid og ressurser til nye eksperimenter hvor man søker å finne de få ideene som faktiske tilfører organisasjonen reell verdi. I en slik kultur er det en naturlig del av utviklingen at mange eksperimenter feiler, men kostnaden er begrenset fordi man feiler tidlig og dermed frigjør tid til nye eksperimenter som igjen kan tilføre verdi. Et viktig poeng med LEAN er at det gir svært begrenset verdi inntil hele virksomhetene jobber etter de samme prinsippene.

Eksempel på organiserting uten LEAN.

 

Hva er Kultur?


Et mønster av felles stilltiende antakelser som ble lært av en gruppe da den løste sine problemer med ekstern tilpasning og intern integrasjon, som fungerte bra nok til å bli betraktet som gyldig, og derfor å bli lært bort til nye medlemmer som den korrekte måten å oppfatte tenke og føle med hensyn til disse problemene.

- Edgar Schein - «The corporate culture survival guide»


 

 

Målet med LEAN er å bygge en kultur som gjør at man kommer nærmere et slikt bilde.

Etter Jez Humble's foredrag var det tid for mingling i aulaen og etterhvert oppsplitting av sporene igjen. Kl 11 delte jeg mitt eksperiment med å bruke eksisterende Cfengine-infrastruktur til å bootstrappe Saltstack [13,14] i Rudder/Cfengine-rommet.

Etter dette fortalte Marco Marongiu fra Opera Software Norge  om sitt opplegg for å dele og gjenbruke felles Cfengine-kode mellom ulike prosjekter[15]. En interessant tilnærming, men jeg ser ikke at det er relevant for USIT for øyeblikket.

Etter lunch tok jeg turen til Misc-sporet hvor Benoit Peccatte fra Normation hadde tanker om hvordan man kan bruke direkte inter-agent kommunikasjon eller distribuerte key-value databaser for å skalere opp uten avhengighet til et sentralt punkt[17]. Denne måten å tenke konfigurasjonsstyring favner bredere enn tradisjonell bruk av verktøyene. Ideene ligner på Mark Burgess arbeide med «Promise Theory» og Cfengine er på sett og vis designet for inter-agent kommunikasjon selv om nesten alle bruker den på en sentralisert måte. Etterhvert som bruken av containere har eksplodert det siste året, er det flere og flere som ser på muligheten for å bruke distribuerte key-value databaser til inter-agent kommunikasjon slik at man oppnår tjenesteoppdaging (service discovery) og muliggjør automatisk distribuert «policy compliance» basert på signaler som traverserer infrastrukturen. Distribuerte key-value databaser i kombinasjon med containere var en av de heteste emnene på årets configuration management camp. Eksempler på slike er: Etcd og Consul   Apache Zookeeper er et annet eksempel som gjør mye av den samme jobben (service discovery), men på en mer sentralisert måte. Foredraget til Benoit  konverterte til en interessant diskusjon med mange innspill fra  @purpleidea med flere og diskusjoner om mulige bidrag til Rudder/Normation sin kodebase.

Konferansen begynner å nærme seg slutten. Etter foredraget til Benoit gikk turen tilbake til Rudder/Cfengine-rommet for mer diskusjoner rundt features og strategi for både Rudder NCF og Cfengine.

Til slutt fortalte Dimitrios Apostolou om Cfengine nøkkelhåndtering [21] og hvordan man børe gjøre initiell nøkkelutveksling på en sikker måte. Dette er kjent stoff for oss, siden vi allerede fra starten har implementert dette inn i vårt provisjoneringsopplegg med PXE og kickstart.

[1] http://cfgmgmtcamp.eu/
[2] http://lanyrd.com/2015/cfgmgmtcamp/sdhhfp/
[3] https://hashicorp.com/
[4] https://www.vagrantup.com/
[5] http://pivotal.io/
[6] http://www.cloudfoundry.org/
[7] http://www.rudder-project.org
[8] http://www.slideshare.net/jooooooon/rudder-30andbeyond
[9] http://lanyrd.com/2015/cfgmgmtcamp/sdhfmf/
[10] http://www.slideshare.net/jamtur01/why-monitoring-sucks-and-what-configuration-management-can-do-about-it
[11] http://lanyrd.com/2015/cfgmgmtcamp/sdhbhm/
[12] http://shop.oreilly.com/product/0636920030355.do
[13] http://lanyrd.com/2015/cfgmgmtcamp/sdhhfp/
[14] http://www.openss.no/?p=166
[15] http://lanyrd.com/2015/cfgmgmtcamp/sdhhfq/
[16] http://lanyrd.com/2015/cfgmgmtcamp/sdhfmk/
[17] http://lanyrd.com/2015/cfgmgmtcamp/sdhfmk/
[18] https://github.com/coreos/etcd
[19] https://www.consul.io/
[20] http://zookeeper.apache.org/
[21] http://lanyrd.com/2015/cfgmgmtcamp/sdhhfw/

Av Jarle Bjørgeengen
Publisert 18. feb. 2015 14:52 - Sist endret 22. mars 2019 12:47
Legg til kommentar

Logg inn for å kommentere

Ikke UiO- eller Feide-bruker?
Opprett en WebID-bruker for å kommentere