CFEngine Roadshow Maiden Voyage Cohesion Techsessie

download CFEngine Roadshow Maiden Voyage Cohesion Techsessie

If you can't read please download the document

description

The CFEngiine Roadshow is a live demonstration of the power of CFEngine. In this demonstration I bought up and configured into the desired state 17 virtual machines. - apt-cacher - nfs server - CFEngine hub - java tomcat7 webservers The content of the demonstration is Open Source, https://github.com/Webhuis/CFEngine-Roadshow The CFEngine Roadshow will be extended with utility servers and other application servers in the near future and will be present at T-Dose: http://www.t-dose.org/2014/schedule Any contribution and improvement is appreciated. The purpose of the CFEngine Roadshow is to develop a complete coherent working setup for a CFEngine3 implementation, that works out of the box.

Transcript of CFEngine Roadshow Maiden Voyage Cohesion Techsessie

  • 1. Cohesion CFEngine Techsessie9 october 2014Hans SpaansCohesionMartin SimonsWebhuis

2. Even voorstellenMartin Simons IT vanaf 1984, zelfstandig sinds 1998 Klassieke IT opleidingen Volmac Econonomie Universiteit van Amsterdam Tot 1994 ontwikkeling voor Mainframe Vanaf 1998 focus op Linux Webhuis opgericht 1999 Vanaf 2007 specialisatie CFEngine Initiator CFEngine Debian-team 3. Agenda Algemene inleiding Automation CFEngine concepten, met voorbeeld Opstarten CFEngine op machines Pauze Tonen uitrol geconfigureerde machines Stap voor stap door de configaties heen Succes story CFEgine DirecTV 4. Bekende productenDe grote drie: Chef CFEngine PuppetOvereenkomsten: Open core Governance Community en Enterprise version 5. Verschillen Puppet, model driven.Ruby Chef, bestaande stapppen automatiserenRuby, Elang CFEngine, policy driven.Native C, draait op Android, Raspbery PiRudder van Normation, completeCFEngine beheer omgeving 6. Historie Automation 7. AutomationStappen in ontwikkeling Scripting Golden Image Third waveGespecialiseerde Automation producten 8. Ontwikkeling Automation 9. Concepten CFEngineGuiding principles Promise theory Desired state, gewenste situatie Convergence Declarative vs Imperative Pull vs PushTechnisch C Footprint 10. Iemand die dit snapt?Promise TheoryVoluntary cooperation between individual, autonomous actorsor agents who publish their intentions to one another in theform of promises-- Mark Burgess 11. Promise universe 12. Status Promise TheoryProf dr Mark Burgess, Prof dr Jan Bergstra Promise Theory: Principles andApplications (Volume 1) A static theory of promiseshttp://arxiv.org/abs/0810.3294Zie ook literatuuroverzicht 13. A Promise Is A Statement of IntentionPromiser Promises to If not currently kept, CFEnginewillA variable hold a certain value of acertain typestore the appropriate value inthe variableA file have certain characteristics(permissions, ownership,etc.)set the desired properties onthe fileA user account exist and have certaincharacteristics (homedirectory, group, etc.)create the user account withthe desired characteristicsA process be running on the system run the appropriate commandto create the process 14. Convergenceof 15. Imperative vs DeclarativeImperative Perl, Ruby, Python Sequentieel Inconsistentie bij onderbrekingDeclarative CFEngine DSL Beschrijft de gewenste situatie CFEngine: Desired state door Convergentie 16. ImperatiefImperatief is sequentieel Stap voor stap in vaste volgorde Afhankelijkheid tussen stappen Onderbreking leidt tot inconsistentie Heruitvoeren na onderbreken kan schadeveroorzaken, wegens herhaling vanstappen die eerder zijn uitgevoerd. 17. DeclaratiefDeclaratief is beschrijvend Beschrijving van de gewenste situatie Stappen zijn onderling onafhankelijk Afwijking desired state is acceptabel Afwijking desired state is niet inconsistent Heruitvoeren policy altijd mogelijk 18. DeclaratiefDeclaratief is beschrijvend Beschrijving van de gewenste situatie Stappen zijn onderling onafhankelijk Afwijking desired state is acceptabel Afwijking desired state is niet inconsistent Heruitvoeren policy altijd mogelijk 19. Componenten CFEngine 20. TechniekCFEngine Pull mechanisme Native C, draait op alles wat C draait Zuinig met resources Kleine footprint Geen dependencies anders dan het OS Gemakkelijk 5.000 nodes per Policy Host 21. Praktijkvoorbeeld convergentieDesired state User: cferoadshow Group: cfegroup Directory: /home/cferoadshow/files Bestand: cfe_test_file cferoadshow is eigenaar met group cfegroup 22. Gewenste situatieroot@ips-161:/home# ls -laR cferoadshow/cferoadshow/:total 12drwxr-xr-x 3 cferoadshow cfegroup 4096 Sep 12 14:07 .drwxr-xr-x 4 root root 4096 Sep 12 14:07 ..drwxr-xr-x 2 cferoadshow cfegroup 4096 Sep 12 14:07 filescferoadshow/files:total 8drwxr-xr-x 2 cferoadshow cfegroup 4096 Sep 12 14:07 .drwxr-xr-x 3 cferoadshow cfegroup 4096 Sep 12 14:07 ..-rw-r--r-- 1 cferoadshow cfegroup 0 Sep 12 14:07 cfe_test_file 23. Anatomie van een Promise 24. De CFEgine codebundle agent create_user_file {files:"/home/cfetest/files/cfe_test_file"perms => mog("644","cfetest","cfegroup"),create => "true"; }bundle agent create_user_directory {files:"/home/cfetest/files/."perms => mog("755","cfetest","cfegroup"),create => "true"; }bundle agent adduser {commands:"/usr/sbin/useradd cfetest -d /home/cfetest -g cfegroup -m"; }bundle agent addgroup {commands:"/usr/sbin/groupadd -g 1001 cfegroup"; }body common control {bundlesequence => { "create_user_file", "create_user_directory","adduser", "addgroup" };inputs =>{ "/var/cfengine/inputs/libraries/cfengine_stdlib.cf" }; } 25. CFEngine demonstratieTomcat7 webapplicatie servers Twee voor de pauze, automated Een na de pauze met dezelfde stappen,maar dan met de handCFEngine stappen: Bootstrap van de policy hub, eenmalig Bootstrap van de eerste agent, eenmalig Kopieren van de policies, automatisch Convergent uitvoeren van de policies 26. Uitrol WebserviceDesired State: OS zaken op de machine zijn standaard Ntp en timezone Resolv.conf Ssh restricted tot public key access Standaard banners issue en motd /etc/hosts voor local name resolution cfetest, martin en hans users Installatie java en tomcat7 webserver Deploy van de Tomcat sample.war 27. Pauze CFEngine (de agent start elke 5 minuten)blijft aan het werk In de pauze vindt de deploy van dewebservice plaats Voor de geinteresseerden laten we de logop het scherm lopen 28. Tweede helftWelkom terug Controleren van de deploy van dewebservice op de eerste twee servers Deploy van de webservice op de vierdeserver, stap voor stap Aandacht voor de CFEngineimplementatie bij DirecTV Los Angeles CA 29. Controle van de ServerDit wilden we deployen: Standaard OS zaken op de machine Java en tomcat webserver Deploy van de Tomcat sample.war 30. Webservice Policybundle agent deploy_webservice {vars:any::"package_name" slist => { "tomcat6", "java" };packages:any::"${package_name}"package_policy => "add",package_method => apt;} 31. Deploy_war Policybundle agent deploy_war {vars:"catalina_base" string => "/var/lib/tomcat6";files:"$(catalina_base)/webapps/sample"handle => "delete_sample",comment => "deleting sample.war",delete => tidy;"$(catalina_base)/webapps/sample.war"handle => "deploy_sample",comment => "deploying sample.war",classes => if_repaired("restart_tomcat"),copy_from => local_cp("/var/lib/webservices/sample.war");} 32. Controle details tijd en timezone resolv.conf ssh access cat issue en motd cat /etc/hosts ls -lsR /home java -version In de browser:webapp4.webhuis.nl:8080/sample 33. Omzet $3,5 Miljard +/- 24 Miljoen abonnees AT&T heeft bod van $40 Miljard uitgebracht > 5.000 servers in Noord en Zuid Amerika > 30 verschillende versies RHEL en OEL > 50 verschillende applicaties 100 netwerken 34. Het resultaat CFEngine controleert nu > 3.500 servers NFL seizoen gestart met CFEngine Besparing op Technisch applicatie beheer Kwaliteitsverhoging in productie Patching is nu mogelijk CMDB automatisch gevuld 35. Waarom ging het goed?De succesvolle CFEngine implementatie bijDirecTV. Management commitment: Optimale facilitering en support, sprints Afscherming van politiek gekrakeel Ver van alles weg, achterop het terrein Management oorlog ging aan ons voorbij Eindpraatje manager:It will never be the same again Geruisloze verandering van de werkwijze 36. Wat kon nog beter?Het kan altijd beter: Training on the job uitbreiden met opleiding Nog geen tijd voor CFEngine denken Enorme druk op snel resultaat, sprints Noodzaak voor Ops, Dev bleef achter Time boxing bracht snel resultaat, maardaardoor bleven ook zaken liggen Oplossen losse eindjes bleef uit Te weinig tijd voor verbeteringen 37. LiteratuurProf Dr Mark Burgess et al A static theory of promiseshttp://arxiv.org/abs/0810.3294 Promises, Impositions, and other Directionalshttp://arxiv.org/abs/1401.3381 A Promise Theory Perspective on Data Networkshttp://arxiv.org/abs/1405.2627Brian Bennett en Aleksey Tsalolikhin https://digitalelf.net/cf-primer/#%281%29Linux Magazine linux-magazine.com/w3/issue/101/Cfengine.pdf 38. Bronnen normation.com training / Rudder www.verticalsysadmin.com trainingFrameworks evolvethinking.com wiki.webhuis.nl/index.php/Dynamic_Cfengine3Techstuff groups.google.com/forum/#!forum/help-cfengine github.com/Webhuis/Cfengine-debian 39. CFEngineJe gaat het pas zienas je het door heb-- Johan Cruijff