Centric connect.engage.succeed

Interface to the people - software enables the business

Geschreven door Bryan Mac Gillavry - 20 april 2017

Bryan Mac Gillavry
Steeds meer bedrijven treden alleen met hun interface (als web-app of website) naar buiten. Dit maakt het soms lastig in te schatten hoe groot een bedrijf in werkelijkheid is. Sommige bedrijven zijn groots in hun interfacing, maar zijn geen full scale-bedrijf. Zo heeft Uber, het grootste ‘taxibedrijf’ ter wereld geen eigen taxi’s in beheer. En MSN, LinkedIn en Facebook, zo’n beetje de grootste mediabedrijven in de wereld, creëren zelf (bijna) geen content. Hetzelfde geldt voor Twitter. Maar hoewel zij geen nieuwsredactie hebben, zijn de berichten op Twitter wel vaak voorpaginanieuws.

Om hun interface snel te wijzigen of uit te breiden, moeten deze bedrijven Agile-werken. Dit geldt niet alleen voor de mobile- of cloud-apps, maar ook voor alle applicaties die operationeel zijn in de backend van deze firma’s. Alleen zo kunnen alle gegevens worden verwerkt. Dit soort bedrijven vormen een high impact-werkomgevingen, waarbij controle een belangrijke factor is voor het (door)ontwikkelen van de interfaces en de hieraan gekoppelde backendsystemen. Ondanks een zeer groot aantal codewijzigingen, zijn de diensten van deze bedrijven goed toegankelijk, met geen tot weinig downtime.

Hoe houden deze bedrijven nu hun levensader, de interface, secure, up-to-date en beschikbaar op tientallen, zo niet honderden servers, zowel in een hybride als in een publieke cloud-oplossing? Uber en MSN bijvoorbeeld, gebruiken hiervoor Chef-software (voorheen Opscode). Om dit soort systemen up-to-date te houden, worden verschillende technieken toegepast, zoals Continuous Delivery [2], Continuous Deployment [1] en Desired State Configuration [3] met cloud automation, configuratie, monitoring, tracking en managementtooling.

Continuous Delivery

Verder is het belangrijk om te weten dat deze bedrijven met DevOps-teams werken. Deze teams houden de interfaces up and running. Hiervoor gebruiken ze Continuous Deployment- [1] en Continuous Delivery-tooling [2], zoals Puppet Labs of Chef. Dit wordt vaak in combinatie gedaan met de integratie van Github voor version control, softwarerepository en Docker-containers.

Continuous Delivery-platform

Continuous Delivery-platform

Desired State Configuration

Puppet Labs en Chef maken het mogelijk, elk met hun eigen methodiek, om een Desired State Configuration (DSC) [3] te gebruiken. Beide softwareproducenten hanteren een centraal cliëntservermodel: Puppet Labs gebruikt een Puppet Master-server en een Puppet-cliënt om de verschillende statussen van de web-apps te controleren en te nivelleren. Bij Chef wordt dit door een Master Chef-servermethode beheerd met een Chef Knife-plugin voor Microsoft Azure of het Windows-platform om virtuele of fysieke nodes via een Chef-cliënt te managen. Chef Knife is de command line-interface van Chef.

Puppet DSC
Puppet DSC

Chef DSC
Chef DSC

DevOps

In een modulaire software-interface wereld, waarin software en infrastructuren bij elkaar komen, is het DevOps-team de schakel die deze interfaces met de juiste tools draaiende kunnen houden. Hoe? Met zo min mogelijk inzet van systeem administrators en doordat er vanuit één console kan worden gewerkt, een gestroomlijnd beheer van Linux- en Windows-omgevingen. Dit levert minder uitval op, omdat de kans op menselijke fouten sterk wordt verminderd. Daarnaast wordt de compliance nageleefd, aangezien in de tooling een modelleringsmogelijkheid is ingebouwd, waardoor het aantoonbaar gemaakt kan worden dat de systeemomgeving compliant is aan bepaalde wet- en regelgeving.

Productontwikkeling

Zowel Puppet als Chef hebben de afgelopen jaren een sterke productontwikkeling doorgemaakt en zijn beschikbaar voor on-premises en voor publieke cloud-aanbieders, waaronder Microsoft Azure. Van beide producten is er een open source- of enterpriselicentiemodel beschikbaar. Hierdoor zijn deze producten krachtiger, maar ook complexer dan voorgaande releases.

Wat maakt Puppet Labs zo bijzonder?

De filosofie van Puppet is gebaseerd op vragen als: wat heb ik werkend in mijn infrastructuur en waarom heb ik dit werken, wat zijn de relaties tussen deze verschillende systemen en hoe wijzigen deze systeem relaties zich? Het is het gedrag van Puppet Labs dat bij een ‘bewust geplande wijziging’ – zoals in een uitgevoerde applicatie change of bij een bug die wordt gedetecteerd tijdens de uitrol hiervan – een ‘correctieve wijziging’ uitvoert ( indien de applicatie niet meer voldoet aan het Puppet Manifest).

Continuous deployment met de Puppet Enterprise Master en Orchestrator.

  • Puppet maakt gebruik van een declaratief commando, zoals Json of XML dat doet. De omgeving van de resource wordt omschreven door configuratiefiles.
  • Deze configuratie-informatie wordt opgeslagen in een Puppet-manifest. Met dit manifest bepaalt Puppet hoe het de applicatie compliant moet houden aan de master deployment.
  • Data die geproduceerd wordt in een Puppet Manifest wordt opgeslagen in de Puppet-dataopslagservice.
  • Puppet Server is het centrale systeem dat de Puppet-nodes beheert. Op deze nodes is de Puppet Agent cliënt-software geïnstalleerd. Deze software zorgt voor communicatie en synchronisatie met de Puppet Server, de Puppet Master.
  • Add-on’s voor het Puppet-platform zijn beschikbaar in Puppet Forge, een opensource-bibliotheek die door de Puppet-community wordt aangeboden.
Puppet platform

Puppet-platform

En Chef?

Chef is een tool voor automation, provisioning en configuratiemanagement. De tool is gebaseerd op Ruby RoR (Ruby on Rails) en gebruikt de commando’s imperatief. Dit betekent dat de opdrachten direct worden uitgevoerd.

  • De Chef-gebruiker schrijft 'recepten' die omschrijven hoe de Chef-server de toepassingen moet beheren en hoe ze geconfigureerd moeten worden. Deze recepten kunnen worden gegroepeerd als een Chef Cookbook voor eenvoudiger beheer.
  • DSC wordt in Chef bereikt met een DSC-script en PowerShell.
  • Chef zorgt ervoor dat elke bron juist is geconfigureerd en corrigeert eventueel middelen die niet in de gewenste toestand staan.
  • Chef kan in een cliënt/server-modus of in een standalone configuratie Chef-solo worden geconfigureerd.
  • Chef Supermarket is een opensource directory van de content, zoals die door de Chef-community wordt aangeboden.
  • Er is een Chef Vault voor een extra beveiligingslaag bovenop de standaardencryptie van Chef.

Chef-platformChef-platform

Meer weten over Chef of Puppet?

De leercurve van Puppet Labs-producten ligt lager dan de leercurve van de Chef-software. Puppet is op operations gericht en de software is vanuit het oogpunt van Sysadmin ontwikkeld. Puppet is model driven, waarbij een beperkte kennis van een programmeertaal nodig is.

Puppet Labs

  • Puppet heeft veel gratis studieresources en de Puppet Learning VM, een ovf-bestand (Open Virtualization Format) dat in de Oracle-virtual box geïmporteerd kan worden.
  • Puppet biedt veel trainingen; van de gratis Puppet-training op beginnersniveau tot een training tegen vergoeding op enterpriseniveau. Wil je nog niets met een fysieke installatie van Puppet doen? Dan is de emulator op de Puppet-website een leuke kennismaking met de kracht van DSC. Ook de gratis Puppet-training Puppet Fundamentals levert een Skytap CentOs VM, waarin de in de cursus opgegeven Puppet CLI-commando’s kunnen worden uitgevoerd.
  • https://learn.puppet.com/: via deze URL is de Learning VM te downloaden. De Learning VM bestaat uit een pre-geconfigureerde versie van Puppet Enterprise.
  • Je kunt op learn.puppet.com een dashboard aanmaken met de voor jou interessante onderwerpen die vanuit een cursuscatalogus aangeboden worden.
  • Er zijn veel case studies terug te vinden op de Puppet-website
  • Via de Azure Marketplace kan de Puppet Enterprise-software (Ubuntu Linux 12.04 LTS) ingericht worden om hiermee tien nodes gratis te beheren. De community van Puppet levert Puppet-modules aan via de Puppet Forge repository.

Puppet on Azure

De getting started guide: Deploying Puppet Enterprise in Microsoft Azure is een manier om de basisprincipes van Puppet Labs te begrijpen en in een testomgeving op te zetten.

Chef Software

Chef heeft een hogere leercurve dan Puppet Labs omdat er anders wordt gekeken naar de rollen binnen de DevOps-teams. De Sysadmin rolgebaseerde optiek is losgelaten en men richt zich meer op de ontwikkelaar.

  • De Chef-trainingswebsite biedt een uitgebreide set aan leermiddelen van de Chef-softwareproducten en een groot aantal Chef-tutorials.
  • Ook Chef heeft een softwarerepository waarbij leden hun modules, Cookbooks genaamd, aanleveren. In de wereld van Chef heet deze Chef Supermarket.

Chef on Azure

Om Chef en het Chef Knife-installatieproces uit te leggen in een lab gaat te ver voor de inhoud van dit blog. Bovendien heeft Patrick van Opsgility hierover al een uitgebreide blog geschreven. 

Ik ben benieuwd naar jullie mening. Zijn Chef en Puppet interessante en blijvende oplossingen voor DevOps-ontwikkelingen op Microsoft Azure? Of zijn ze binnenkort achterhaald door nieuwe inzichten met bijvoorbeeld Power Shell Desired State Configuration (DSC), Extension for Azure of andere tooling?

Referenties

[1] Continuous deployment - kan worden gezien als een verlengstuk van continue software integratie, die gericht is op het zo kort mogelijk houden van de doorlooptijd, de tijd die is verstreken tussen de ontwikkeling van en het schrijven van een nieuwe regel code en dat deze nieuwe code wordt gebruikt door gebruikers, in de productie omgeving.

[2] Continuous delivery - een software engineering benadering van het werken in kleine ontwikkel teams om software te produceren in korte cycli er voorzorgen dat er sneller en op elk moment een betrouwbare software release kan plaats vinden.

[3] Desired state configuration (DSC) –Specificeert hoe verschillende (software) systemen hun status op een declaratieve manier oorspronkelijk zijn (via code) gedefinieerd en die gemonitord kunnen worden, gecorrigeerd en doorontwikkeld etc. via een beheerd knooppunt.

Bryan Mac Gillavry is Craft Expert van Team Cloud binnen Craft, hét groeiprogramma voor IT'ers (powered by Centric). Wil je zijn blog volgen? Schrijf je in voor de Craft-update.

Tags:Cloud