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.
2. Even voorstellen
Martin 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 producten
De grote drie:
● Chef
● CFEngine
● Puppet
Overeenkomsten:
● Open core
● Governance
● Community en Enterprise version
5. Verschillen
● Puppet, model driven.
Ruby
● Chef, bestaande stapppen automatiseren
Ruby, Elang
● CFEngine, policy driven.
Native C, draait op Android, Raspbery Pi
Rudder van Normation, complete
CFEngine beheer omgeving
9. Concepten CFEngine
Guiding principles
● Promise theory
● Desired state, gewenste situatie
● Convergence
● Declarative vs Imperative
● Pull vs Push
Technisch
● C
● Footprint
10. Iemand die dit snapt?
Promise Theory
Voluntary cooperation between individual, autonomous actors
or agents who publish their intentions to one another in the
form of promises
-- Mark Burgess
12. Status Promise Theory
Prof dr Mark Burgess, Prof dr Jan Bergstra
● Promise Theory: Principles and
Applications (Volume 1)
● A static theory of promises
http://arxiv.org/abs/0810.3294
Zie ook literatuuroverzicht
13. A Promise Is A Statement of Intention
Promiser Promises to… If not currently kept, CFEngine
will
A variable… …hold a certain value of a
certain type
…store the appropriate value in
the variable
A file …have certain characteristics
(permissions, ownership,
etc.)
…set the desired properties on
the file
A user account …exist and have certain
characteristics (home
directory, group, etc.)
…create the user account with
the desired characteristics
A process …be running on the system …run the appropriate command
to create the process
15. Imperative vs Declarative
Imperative
● Perl, Ruby, Python
● Sequentieel
● Inconsistentie bij onderbreking
Declarative
● CFEngine DSL
● Beschrijft de gewenste situatie
● CFEngine: Desired state door Convergentie
16. Imperatief
Imperatief is sequentieel
● Stap voor stap in vaste volgorde
● Afhankelijkheid tussen stappen
● Onderbreking leidt tot inconsistentie
● Heruitvoeren na onderbreken kan schade
veroorzaken, wegens herhaling van
stappen die eerder zijn uitgevoerd.
17. Declaratief
Declaratief 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. Declaratief
Declaratief 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
20. Techniek
CFEngine
● 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 convergentie
Desired state
● User: cferoadshow
● Group: cfegroup
● Directory: /home/cferoadshow/files
● Bestand: cfe_test_file
● cferoadshow is eigenaar met group cfegroup
25. CFEngine demonstratie
Tomcat7 webapplicatie servers
● Twee voor de pauze, automated
● Een na de pauze met dezelfde stappen,
maar dan met de hand
CFEngine 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 Webservice
Desired 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 de
webservice plaats
● Voor de geinteresseerden laten we de log
op het scherm lopen
28. Tweede helft
Welkom terug
● Controleren van de deploy van de
webservice op de eerste twee servers
● Deploy van de webservice op de vierde
server, stap voor stap
● Aandacht voor de CFEngine
implementatie bij DirecTV Los Angeles CA
29. Controle van de Server
Dit wilden we deployen:
● Standaard OS zaken op de machine
● Java en tomcat webserver
● Deploy van de Tomcat 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 bij
DirecTV. 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, maar
daardoor bleven ook zaken liggen
● Oplossen losse eindjes bleef uit
● Te weinig tijd voor verbeteringen
37. Literatuur
Prof Dr Mark Burgess et al
● A static theory of promises
http://arxiv.org/abs/0810.3294
● Promises, Impositions, and other Directionals
http://arxiv.org/abs/1401.3381
● A Promise Theory Perspective on Data Networks
http://arxiv.org/abs/1405.2627
Brian Bennett en Aleksey Tsalolikhin
● https://digitalelf.net/cf-primer/#%281%29
Linux Magazine
● linux-magazine.com/w3/issue/101/Cfengine.pdf
38. Bronnen
● normation.com training / Rudder
● www.verticalsysadmin.com training
Frameworks
● evolvethinking.com
● wiki.webhuis.nl/index.php/Dynamic_Cfengine3
Techstuff
● groups.google.com/forum/#!forum/help-cfengine
● github.com/Webhuis/Cfengine-debian
39. CFEngine
Je gaat het pas zien
as je het door heb
-- Johan Cruijff