Infrastructure as Code en de DevOps beweging



Vergelijkbare documenten
Ubuntu Release Party XTG 11/23/12 1

kubernetes It compiles, ship it! Oscar Buse 13 februari 2018 Linux User Group Nijmegen

Waarom Cloud? Waarom nu? Marc Gruben April 2015

HP Hyper-ConvergedSystem StoreVirtual & EVO: RAIL

CONTAINERIZATION OF APPLICATIONS WITH MICROSOFT AZURE PAAS SERVICES

Cloud werkplek anno Cloud werkplek anno 2014

vra + NSX and it all comes together

IT Galaxy 2018 ON THE RIGHT TRACK ON THE RIGHT TRACK #PQRITG18 #PQRITG18

Door toenemende automatisering en slimmere tools verdwijnt het werk voor de klassieke IT beheerder

Technische architectuur Beschrijving

ORBIS SOFTWARE TASKCENTRE INTEGREERT

Virtualizatie bij SIN

Cloud Computing. Definitie. Cloud Computing

Portability, Interoperability of toch maar Connectivity Portability, Interoperability of toch maar Connectivity.

DEVOPS kickstarter. van idee naar productie in Azure! 1 / 21

Welkom bij IT-Workz. Etten-Leur, 16 november Altijd en overal werken en leren. Applicatie en Desktop Delivery met Quest vworkspace

Data en Applicatie Migratie naar de Cloud

IAAS - QUICK START GUIDE

Technologieverkenning

Van 6 weken naar 6 minuten. met. OpenSource. Jan-Taeke Schuilenga Infrastructuur Architect Jantaeke.schuilenga@duo.nl

Cloud Computing. Bart van Dijk

Deployment met PowerShell DSC. 20 september 2017 EIC B.V.

5/8 Patch management

Cloud dienstverlening en Informatiebeveiliging. ISACA Round Table Assen - Maart 2017

Agenda Wat zijn de gevolgen van Cloud en Gridcomputing voor de gebruikersorganisatie en de beheersfunctie.

Temperatuur logger synchronisatie

SURFcumulus. Informatiebijeenkomst 16 maart 2017

Arjen Glas Stage: Viaict. Opdracht virtualisatie I44

Cloud lessons learned

BRAIN FORCE THE JOURNEY TO THE CLOUD. Ron Vermeulen Enterprise Consultant

Microsoft; applicaties; ontwikkelaar; developer; apps; cloud; app; azure; cloud computing; DevOps; microsoft azure

Een infra DevOps CI/CD straat

Windows XP Migratie opties. Bart van Dijk

Studietaak 5 Hoe installeer ik software? ProFTPD FTP-Server

Central Point Services

CONTAINERISATIE EN APPLICATIE- BEHEER

Cloud Computing: Het concept ontrafeld

PROJECT: IRIS. (Plan van aanpak) Naam Functie Paraaf

SURFconext Cookbook. Het koppelen van Alfresco aan SURFconext. Versie: 1.0. Datum: 8 december admin@surfnet.nl

Aanmelden Na installatie wordt de service automatisch gestart en kunt u meteen aanmelden van op afstand:

Factsheet CLOUD MIGRATIE Managed Services

Agenda. doelstelling situering voor- en nadelen functionaliteit opbouw voorwaarden besluitvorming

5/9 PlateSpin. 5/9.1 PlateSpin Portability Suite

Welkom bij Interconnect. Maartje van Alem Marketing Manager

Een dag uit het leven van een Cloud consument Stefan Willems, Platani Marcel Steenman, Platani

Functionele beschrijving: Scannen naar AFAS Profit.

Intern (On-Premise) Co-Location Infrastructure-as-a-Service (IaaS) Platform-as-a-Service (PaaS)

Delft-FEWS & Web Services

Installatie procedure BINK 9

Vier goede redenen om over te stappen naar de cloud

Soft-Solutions. Stageverslag

Release (p)review. Microsoft releases 2012

Generieke gemeentelijke Infrastructuur modellen. Naar de Cloud

Internettechnlogie, systteem- en netwerkbeheer MODULECODE STUDIEPUNTEN 10 VRIJSTELLING MOGELIJK ja

HANDLEIDING DMS Plugin Installatie, configuratie & werking

+32 (491)

VMWORLD 2011 US WRAP

Software Test Plan. Yannick Verschueren

Technische Specificaties nieuwe Unix Applikaties

Oracle Application Server Portal Oracle Gebruikersgroep Holland Oktober 2003

Wijzigingen volledig onder controle en geborgd

Functionele beschrijving: scannen naar Exact Globe.

Vijf netwerkuitdagingen die je eenvoudig oplost met Cisco Meraki. Zo geeft Cisco Meraki je de volledige regie over je netwerkbeheer

STORAGE AUTOMATION IT MANAGEMENT & OPTIMIZATION DATAGROEI DE BAAS MET EXTREEM BEHEERGEMAK DOOR AUTOMATISERING EN VIRTUALISATIE

Grip-IT Planning & Forecasting Tool. Voor beheerste Operations en bestuurbare proces-prestaties

Agenda. Over KPN en de relatie tot Docker Contains paradigma De uitdagingen De benefits Vragen. 2 The good, the bad and the containers

SaaS en cloud computing: in de mist of in de wolken? Karin Zwiggelaar, partner 20 september 2010

Chapter 4. eenvoudige webserver opzetten

Voltijdse dagopleiding netwerkbeheerder

HOE EENVOUDIG IS HET OM GEBRUIK TE MAKEN VAN CLOUD COMPUTING?

Cloud & Licenties. Welkom bij BSA The Live Sessions De Live Session start binnen enkele minuten. Dank voor uw geduld.

Business Workflow innovaties in SAP S/4 HANA

Variability in Multi-tenant SaaS Applications:

Studietaak 4 Hoe installeer ik software? Apache Webserver

Hoge beschikbaarheid bij Lips Textielservices Johan Westerduin, Transfer Solutions

Linux Server Back-up Online

XAMPP Web Development omgeving opzetten onder Windows.

Technische implementatie De infrastructuur rondom Transit kent de volgende rollen:

BIG DATA: OPSLAG IN DE CLOUD

Software Test Plan. Yannick Verschueren

Laten we eens beginnen met de mouwen op te stropen en een netwerk te bouwen.

noun a person employed in a port to load and unload ships.

Uitdagingen performancetesten in een Agile omgeving Best Practices & Demo

Dit document beschrijft belangrijke aandachtspunten voor de installatie van Deep Defender. Ook omschrijft dit document hoe de beheerder kan omgaan

Cloud Computing: Met HPC in de wolken Ron Trompert

ORBIS SOFTWARE TASKCENTRE INTEGREERT

Azure en BI: niet alleen voor grote bedrijven

Functionele beschrijving: scannen naar UNIT4 DocumentManager

Factsheet CLOUD DESIGN Managed Services

BeheerVisie ondersteunt StUF-ZKN 3.10

HiveIO Fabric Technical Overview

Siemens workpoints en DHCP options

Monitoring. SolidBE B.V. Maarten Schoutenstraat SV Waddinxveen

Keynote. Innovatiedag. November Opleidingen Consultancy Detachering Remote Services

SD-WAN, de nieuwe IT- Infrastructuur. Een functionele en technische uitleg waarom SD-WAN zo populair is.

5/5 Red Carpet. 5/5.1 Inleiding

uziconnect Installatiehandleiding

HET BESTURINGSSYSTEEM

Functionele beschrijving: scannen naar van Brug software.

Onverwachte voordelen van Server Virtualisatie

Transcriptie:

INLEIDING De opkomst van Cloud computing zal weinigen ontgaan zijn, en er is ondertussen nauwelijks discussie meer over dat dit een blijvende plaats in het IT landschap ingenomen heeft. De daarbij genoemde belangrijkste voordeel zijn de flexibilisering van IT resources, die geconsumeerd worden met een pay-as-you-go afrekenmodel. En als het even kan ook nog de nodige kostenbesparingen. De genoemde flexibiliteit van Cloud computing brengt ongekende mogelijkheden, maar er zijn een fors aantal uitdagingen om die flexibiliteit ook daadwerkelijk te exploiteren. Dit artikel belicht een aantal bouwstenen om de mogelijkheden van een op Infrastructure as a Service (IaaS) gebaseerde oplossing uit te nutten. Infrastructure as a Service IaaS biedt infrastructuurcomponenten als servers, storage, load balancers en netwerken on demand. Het feit dat je bij zo n IaaS op ieder gewenst moment resources zoals servers en storage kunt starten en weer stoppen biedt een aanzienlijk voordeel ten opzichte van de traditionele harde infrastructuur. IaaS is een vorm van cloud computing met een relatief laag abstractieniveau. Dit heeft als nadeel dat er nog steeds veel beheerd moet worden aangezien in feite alleen het fysieke aspect van infrastructuren uitbesteed is aan de cloud leverancier. Dit lage abstractienivea maakt het echter ook mogelijk om zonder veel aanpassingen te migreren naar een cloud omgeving. Deze laagdrempeligheid heeft er voor gezorgd dat IaaS op dit moment veruit de meest populaire vorm van cloud computing is. Met de opkomst van Cloud computing, met haar op papier onbegrensde mogelijkheden maar ook met haar eigen uitdagingen is er een explosie van nieuwe methodes, tools en services op gang gekomen die inspelen op deze ontwikkelingen, maar vaak ook zeer waardevol zijn in traditionele IT omgevingen. In dit artikel lichten we een tweetal veelbelovende aspecten eruit. De eerste is vooral bekend onder de term Infrastructure as Code, waarbij infrastructuren (netwerken, firewalls, servers, load balancers, dns configuraties etc.) als programmatuur ontwikkelt wordt en vervolgens ook op die manier gecreëerd en beheerd worden. Het tweede, hier aan gerelateerd, is het automatiseren van systeem configuratie management, waarbij systemen volledig automatisch geconfigureerd worden en dat ook blijven gedurende de levensduur van het systeem. Dit is natuurlijk niet nieuw, maar als gevolg van de dynamiek van een op cloud computing gebaseerde oplossing nog veel belangrijker geworden. In dit artikel belichten we de achtergrond van deze ontwikkelingen, en laten met behulp van een concreet voorbeeld zien hoe dat er in de praktijk werkt. Infrastructure as Code en de DevOps beweging

De meest voelbare verandering van een IaaS cloud is dat niets tastbaar meer is. Er zijn racks, servers en switches meer die je kunt vasthouden en je hoort niet meer het gezoem en geratel van harde schijven die op topsnelheid roteren. Het fysieke aspect is volledig overgenomen door de IaaS provider, met als consequentie dat de hardware eigenlijk ook software is geworden. Dit heeft veel invloed op hoe wij IT consumeren. Een van de belangrijkste verschuivingen is de rol van de traditionele IT operations. Dit is niet alleen doordat bepaalde werkzaamheden uitbesteed worden, maar ook doordat infrastructuur services steeds meer verweven worden met applicatie logica worden. Een aansprekend voorbeeld is hierbij het automatisch kunnen opschalen (en weer terug) van server resources bij pieken in het gebruik van de applicatie. Dit vereist een integratie tussen applicatie en infrastructuur die tot voorheen niet mogelijk was. Een logisch gevolg van deze is dat applicatie ontwikkelaars, veel meer dan voorheen verantwoordelijk worden voor de provisioning van server resources. Aangezien deze ontwikkelaars niet de achtergrond en ervaring hebben die nodig is voor het beheren van grootschalige infrastructuren kan dit al snel tot een onwerkbare situatie leiden. De trend die hier op inspeelt is de zogenaamde DevOps aanpak, die een veel strakkere integratie tussen Corporate IT, Application Development en Quality Assurance nastreeft. Een van de fundamentele pijlers in de DevOps aanpak is de Infrastructure as Code. Met de opkomst van cloud computing is het mogelijk geworden om infrastructuren te creëren (en ook weer af te breken) met behulp van code. Het creëren van netwerken, subnets, firewalls servers, load balancers en harde schijven door middel van scripts is

een bijzonder krachtig middel en door een aantal natuurkundige wetten simpelweg niet mogelijk in een traditionele architectuur. Voorbeelden van dergelijke oplossingen zijn Amazon Cloudformation, Spiceweasel en Vagrant, waarbij de focus in dit artikel op Cloudformation zal liggen. Met dergelijke tools kunnen servers, firewall, loadbalancers, dns configuraties, etc worden geactiveerd en geconfigureerd. Dit alles op basis van een configuratie script en zonder de fysieke handelngen die daar normaliter bijhoren. Dit betekent dat wanneer je het script klaar hebt je met één druk een server draaiende kan hebben in een volledig geconfigureerd netwerk. Cloudformation als voorbeeld van Infrastructure as Code Cloudformation is een onderdeel van Amazon Webservices (AWS). AWS is veruit marktleider in de IaaS markt, en volgens rapporten draait reeds een adembenemende 1% van het gehele internet op deze service. Met AWS Cloudformation kun je op basis van een template een stack starten of wijzigen. Een stack is een verzameling van infrastructuur elementen die gestart/geconfigureerd worden op basis van een web services api. Deze onderdelen kunnen bijv. zijn: Netwerk topologie, inclusief subnets, route tables, access control lists en NAT configuraties; Automatisch schalende server instances inclusief bijbehorende storage; Een volledig geconfigureerde firewall; DNS configuraties; Messaging queues en topics; Een stack wordt ontwikkeld in de vorm van een script (in json formaat) en met behulp van de web interface of command line geïnitieerd. Een interessant detail, en in dit artikel tevens de link naar het volgende topic is het feit dat je een server kunt laten opstarten waarbij zelf gedefinieerde data als opstart parameter meegegeven wordt. Op basis van deze feature zijn een aantal tools ontwikkeld die op basis van deze meegegeven informatie actie ondernemen. Het meest bekende voorbeeld van zo n tool is de zogeheten cloud-init tool, ontsproten uit de Ubuntu community maar ook beschikbaar op andere platformen. Cloud-init stelt je o.a. in staat om de meegegeven user-data in de vorm van een shell script te formuleren die automatisch uitgevoerd wordt aan het einde van de boot sequence. Dit lijkt triviaal maar is in feite een krachtige enabler voor het automatisch kunnen configureren van spontaan opkomende server instances. In theorie kan een gehele server op deze manier geconfigureerd worden met behulp van custom scripts maar al vrij snel wordt dat een tijdsrovende aangelegenheid en wordt de toegevoegde waarde van een meer flexibele configuration management oplossing duidelijk. Dit is het tweede aspect waar we op inzoomen.

Configuration Management Het installeren en configureren van servers is een tijdrovende aangelegenheid. Dit was al duidelijk in de tijd dat servers nog zoemende dozen waren, maar door de flexibiliteit van gevirutaliseerde infrastructuren is het aantal noodzakelijke configuratiehandelingen geëxplodeerd. Voor het efficient kunnen lanceren van nieuwe server instances zijn in hoofdlijnen twee oplossingsrichtingen te bedenken: het creëren van gespecialiseerde server images die alle services en configuraties bevat, en waarbij de image zeer snel geinstantieerd kunnen worden. het gebruiken van een basis server image en het on-the-fly (tijdens het opstarten van de server instance) configureren van de benodigde services en configuraties. Beide oplossingen kunnen werken en hebben hun eigen voor- en nadelen. De configuration management aanpak die hier geschetst wordt gaat uit van de aanpak waarbij er één basis image is en alle configuraties tijdens het opstarten van de server instance toegepast worden. Het voordeel van deze aanpak is dat er gewonnen is op flexibiliteit en makkelijker ingespeeld kan worden op wijzigingen (bijv. updates op het operating systeem), maar vereist daarentegen wel weer een forse investering. Het moge duidelijk zijn dat tooling vereist is voor het kunnen beheren en uitvoeren van dergelijke configuraties. Naast de commerciele oplossingen zijn er in de loop van tijd een aantal Open Source producten verschenen met als doel het automatiseren van dit soort configuratie taken. De eerste serieuze speler was CFEngine, daarna gevolgd door Puppet en in een later stadium Chef. Chef is afgeleid van Puppet, waarbij Puppet weer afgeleid is van CFEngine. Centraal binnen deze toepassingen staat het concept van rollen die toegepast worden op een server instance. Deze rollen beschrijven in welke staat (software, services, configuraties) een server dient te verkeren door middel van client wordt met regelmaat gecontroleerd in hoeverre de actuele status overeenkomt met de werkelijkheid en indien gewenst worden aanpassingen doorgevoerd. Chef in meer detail Een aantal kernonderdelen en -concepten van de Chef oplossing worden hieronder beschreven: De centrale Chef Server, al dan niet in een hosted variant; Chef Workstation; Chef Client; Nodes; Server Roles; Cookbooks en Recipes.

Cookbooks / Recipes Chef maakt gebruik van cookbooks, die weer bestaan uit een of meerdere recipes. Een Cookbook is een verzameling configuraties voor een bepaalde tool of server rol, bijv. voor het inrichten van de Apache webserver. Er is een grote collectie open source cookbooks vrij beschikbaar en waar nodig kunnen deze aangepast worden of nieuwe cookbooks gemaakt worden. De verschillende onderdelen Het volgende plaatje geeft aan hoe de Chef Server, Workstation, Client en Nodes zich tot elkaar verhouden. Voor de server kun je kiezen tussen een eigen Chef server inrichten en beheren (wat overigens ook weer via Chef kan) of een Software as a Service variant: Hosted Chef. Via het workstation wordt beheerd welke rollen en welke configuratieparameters gebruikt zullen worden en wanneer een server instance (een node genaamd, kan ook een desktop zijn) geïnitieerd wordt. Een node draait de Chef Client die zorgt dat de gewenste configuratie toegepast wordt. Het ontwikkelen van een configuratie op basis van een dergelijk tool is iets dat zeker een investering vergt en met name ook alleen floreert als er sprake is van gedisciplineerd werken. Het is in een cloud omgeving echter nagenoeg onmisbaar maar kan ook van veel toegevoegde waarde zijn in andere omgevingen. Zo is een eenmaal ontwikkelde configuratie direct toepasbaar in andere omgevingen als een traditioneel server park of voor het automatisch creëren en configureren van een desktop virtual machine voor ontwikkel- en testwerkzaamheden. Voorbeeld: Ontwikkel- en testomgeving On Demand

In dit voorbeeld laten we zien hoe een volledig geconfigureerde ontwikkel- en testomgeving opgestart kan worden met behulp van Cloudformation en (Hosted) Chef. Behalve de configuratie voor de server in kwestie, zijn er meer configuratie benodigd. Onder word sterk vereenvoudigd de verschillende componenten weergegeven van in dit geval een omgeving die (al dan niet automatisch) kan uitschalen. AMAZON CLOUDFORMATION: De hierboven getoonde omgeving wordt gecreëerd en vervolgens beheerd met behulp van een zogeheten Cloudformation stack. Cloudformation stelt je in staat alle keuzes die je maakt op een declaratieve manier in een template vast te leggen. Zo n template is een JSON script waarin je specificeert uit welke resources de omgeving bestaat. Zo n template is met een simpele text editor te maken en alhoewel het al snel vrij groot wordt kan het snel opgebouwd worden door de beschikbaarheid van een grote hoeveelheid voorbeelden en snippets. Een vast onderdeel van een Cloudformation template zijn de input parameters, waarmee de template herbruikbaar gemaakt kan worden en al naar gelang de situatie specifieke keuzes gemaakt worden.

Deze parameters kunnen een default waarde toegekend worden en tijdens het creëren van de Cloudformation stack kunnen nieuwe waarden toegekend worden. Het meest omvangrijke onderdeel van de template is de declaratie van de gewenste resources. Deze kunnen in een willekeurige volgorde gespecificeerd worden waarna

Cloudformation de afhankelijkheden bepaald en deze in de gewenste volgorde zal creëren. Als voorbeeld wordt hieronder de definitie van een security group (een soort firewall) gegeven. Iedere resource wordt op een dergelijke manier gedeclareerd waarbij input parameters maar ook gegevens van andere resource elementen gebruikt kunnen worden.

Onderstaand wordt een complexere snippet getoond van de DNS A-Record registratie waarbij zowel input data (DomainName) als bepaalde parameters van de net gecreëerde load balancer gebruikt worden. Door middel van het Cloudformation template wordt de volledige infrastructuur gecreëerd, maar hoe wordt er nu voor gezorgd dat de server de uiteindelijke gewenste configuratie toegepast krijgt? Dit kan bereikt worden door in de template een script te definieren dat door iedere server bij het opstarten uitgevoerd wordt.

Dit script, in dit geval op een Windows server maar dit werkt nagenoeg identiek op bijv. Ubuntu Linux voert het cfn-init commando uit. Dit cfn-init commando interpreteert de meta-data sectie wat ook gespecificeerd is in de template. Deze meta-data sectie stelt je in staat om te specificeren welke bestanden aangemaakt moeten worden, (op Linux) welke software packages geïnstalleerd en services gestart moeten worden en welke aanvullende commando s uitgevoerd moeten worden. In feite is het cfn-init een lichtgewicht server configuratie management systeem. Deze script en meta-data secties kunnen gebruikt worden voor het initialiseren van de server zodanig dat het contact kan maken met de Chef server. Dit betekent het installeren en configureren van de Chef Client software, die dan vervolgens contact zoekt met de Chef server om de benodigde wijzigingen door te voeren. De cloudformation stack kan uitgevoerd worden via de Web console van AWS, dan wel via de command line interface uitgevoerd worden. Tijdens het aanmaken van de stack kan de voortgang gevolgd worden door middel van het monitoren van de events. En wanneer de stack succesvol is voltooid zal je dit te zien krijgen: Indien Cloudformation niet lukt om de stack aan te maken wordt alles teruggedraaid en alle reeds aangemaakte resources weer opgeruimd. Het is overigens wel belangrijk om vervolgens eventuele wijzigingen in de configuratie altijd via Cloudformation door te voeren, en dus niet meer handmatig. Opscode Chef: Nadat een server via de Cloudformation stack opgestart en geconfigureerd is, zoekt de geinstalleerde Chef client contact met de Chef server. Hierbij hebben we gebruik gemaakt van de SaaS variant Hosted Chef. Deze is gratis in het gebruik tot vijf nodes en daardoor uitermate geschikt voor evaluaties. De configuratie die we hierbij toegepast hebben bestond nagenoeg uit standaard beschikbare Cookbooks:

Op het moment dat de Chef client zich geauthenticeerd heeft bij de Chef server wordt deze getoond in de Node list: Node list: Om de node te juiste packages te laten installeren moet deze een rol worden toegekend. Wij hebben een rol DEV aangemaakt en daaraan een aantal recipes aangekoppeld. Role DEV (runlist): Nadat de rol is toegekend kan de chef-client, al dan niet als service uitgevoerd worden waarbij gezorgd wordt de node up-to-date is en dat ook blijft bij eventuele wijzigingen in de configuratie. Conclusies Cloud Computing brengt grote mogelijkheden maar komt met haar eigen beperkingen en uitdagingen. In dit artikel hebben we laten zien hoe de industrie daar op reageert en hebben we een tweetal tools uitgelicht die een indruk geven wat de mogelijkheden zijn. We staan nog slechts aan het begin van deze ontwikkelingen en het is onze vaste overtuiging dat de manier hoe wij met Informatie Technologie omgaan drastisch aan het wijzigen is.

Dat biedt nieuwe, ongekende mogelijkheden maar die weg zal niet zonder hobbels zijn. Meegaan met de trend met een sterke focus op eigen behoeften en mogelijkheden is het devies.