SlideShare a Scribd company logo
1 of 39
Cohesion CFEngine Techsessie 
9 october 2014 
Hans Spaans 
Cohesion 
Martin Simons 
Webhuis
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
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
Bekende producten 
De grote drie: 
● Chef 
● CFEngine 
● Puppet 
Overeenkomsten: 
● Open core 
● Governance 
● Community en Enterprise version
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
Historie Automation
Automation 
Stappen in ontwikkeling 
● Scripting 
● Golden Image 
● Third wave 
Gespecialiseerde Automation producten
Ontwikkeling Automation
Concepten CFEngine 
Guiding principles 
● Promise theory 
● Desired state, gewenste situatie 
● Convergence 
● Declarative vs Imperative 
● Pull vs Push 
Technisch 
● C 
● Footprint
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
Promise universe
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
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
Convergence 
of
Imperative vs Declarative 
Imperative 
● Perl, Ruby, Python 
● Sequentieel 
● Inconsistentie bij onderbreking 
Declarative 
● CFEngine DSL 
● Beschrijft de gewenste situatie 
● CFEngine: Desired state door Convergentie
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.
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
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
Componenten CFEngine
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
Praktijkvoorbeeld convergentie 
Desired state 
● User: cferoadshow 
● Group: cfegroup 
● Directory: /home/cferoadshow/files 
● Bestand: cfe_test_file 
● cferoadshow is eigenaar met group cfegroup
Gewenste situatie 
root@ips-161:/home# ls -laR cferoadshow/ 
cferoadshow/: 
total 12 
drwxr-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 files 
cferoadshow/files: 
total 8 
drwxr-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
Anatomie van een Promise
De CFEgine code 
bundle 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" }; }
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
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
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
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
Controle van de Server 
Dit wilden we deployen: 
● Standaard OS zaken op de machine 
● Java en tomcat webserver 
● Deploy van de Tomcat sample.war
Webservice Policy 
bundle agent deploy_webservice { 
vars: 
any:: 
"package_name" slist => { "tomcat6", "java" }; 
packages: 
any:: 
"${package_name}" 
package_policy => "add", 
package_method => apt; 
}
Deploy_war Policy 
bundle 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"); 
}
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
● 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
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
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
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
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
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
CFEngine 
Je gaat het pas zien 
as je het door heb 
-- Johan Cruijff

More Related Content

Similar to CFEngine Roadshow Maiden Voyage Cohesion Techsessie

Netwerkfunctievirtualisatie: proof-of-concept en demo
Netwerkfunctievirtualisatie: proof-of-concept en demoNetwerkfunctievirtualisatie: proof-of-concept en demo
Netwerkfunctievirtualisatie: proof-of-concept en demoSURFnet
 
Mijn site beveiliging
Mijn site beveiligingMijn site beveiliging
Mijn site beveiligingMarko Heijnen
 
SNUG 2007 - Lotus Domino 8 Administration (dutch/nederlands)
SNUG 2007 - Lotus Domino 8 Administration (dutch/nederlands)SNUG 2007 - Lotus Domino 8 Administration (dutch/nederlands)
SNUG 2007 - Lotus Domino 8 Administration (dutch/nederlands)Fred Janssen
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsRichard Tuin
 
Load En Stress Testers Te Slim Af Final
Load En Stress Testers Te Slim Af FinalLoad En Stress Testers Te Slim Af Final
Load En Stress Testers Te Slim Af FinalPlutonIT
 
ICT & Gezond verstand
ICT & Gezond verstandICT & Gezond verstand
ICT & Gezond verstandB.A.
 
Open Computer and Software Inventory
Open Computer and Software InventoryOpen Computer and Software Inventory
Open Computer and Software Inventory247 Invest
 
XPages Introductie
XPages IntroductieXPages Introductie
XPages IntroductieRob Bontekoe
 
Digipinguins: containers en virtualisatie (Ghlen Nagels - youngsource.be)
Digipinguins: containers en virtualisatie (Ghlen Nagels - youngsource.be)Digipinguins: containers en virtualisatie (Ghlen Nagels - youngsource.be)
Digipinguins: containers en virtualisatie (Ghlen Nagels - youngsource.be)Avansa Mid- en Zuidwest
 
Lekker weer nlnog_how_to_avoid_buying_expensive_routers
Lekker weer nlnog_how_to_avoid_buying_expensive_routersLekker weer nlnog_how_to_avoid_buying_expensive_routers
Lekker weer nlnog_how_to_avoid_buying_expensive_routersPavel Odintsov
 
ING : How top quality software and state-of-the-art technology leads to conti...
ING : How top quality software and state-of-the-art technology leads to conti...ING : How top quality software and state-of-the-art technology leads to conti...
ING : How top quality software and state-of-the-art technology leads to conti...NLJUG
 
Deployment strategieën, WP Meetup Enschede, 26-02-2015
Deployment strategieën, WP Meetup Enschede, 26-02-2015Deployment strategieën, WP Meetup Enschede, 26-02-2015
Deployment strategieën, WP Meetup Enschede, 26-02-2015Arjan Snaterse
 
8 tips voor goed beheer
8 tips voor goed beheer8 tips voor goed beheer
8 tips voor goed beheerZinnovation
 
Ditp backupserver
Ditp backupserverDitp backupserver
Ditp backupserverditp
 
Drupal Deployment demo
Drupal Deployment demoDrupal Deployment demo
Drupal Deployment demodropsolid
 

Similar to CFEngine Roadshow Maiden Voyage Cohesion Techsessie (20)

Netwerkfunctievirtualisatie: proof-of-concept en demo
Netwerkfunctievirtualisatie: proof-of-concept en demoNetwerkfunctievirtualisatie: proof-of-concept en demo
Netwerkfunctievirtualisatie: proof-of-concept en demo
 
Mijn site beveiliging
Mijn site beveiligingMijn site beveiliging
Mijn site beveiliging
 
SNUG 2007 - Lotus Domino 8 Administration (dutch/nederlands)
SNUG 2007 - Lotus Domino 8 Administration (dutch/nederlands)SNUG 2007 - Lotus Domino 8 Administration (dutch/nederlands)
SNUG 2007 - Lotus Domino 8 Administration (dutch/nederlands)
 
Netflow Performance
Netflow PerformanceNetflow Performance
Netflow Performance
 
Windows Server2008
Windows Server2008Windows Server2008
Windows Server2008
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele tests
 
Load En Stress Testers Te Slim Af Final
Load En Stress Testers Te Slim Af FinalLoad En Stress Testers Te Slim Af Final
Load En Stress Testers Te Slim Af Final
 
ICT & Gezond verstand
ICT & Gezond verstandICT & Gezond verstand
ICT & Gezond verstand
 
Open Computer and Software Inventory
Open Computer and Software InventoryOpen Computer and Software Inventory
Open Computer and Software Inventory
 
XPages Introductie
XPages IntroductieXPages Introductie
XPages Introductie
 
Hands on presentatie
Hands on presentatieHands on presentatie
Hands on presentatie
 
Digipinguins: containers en virtualisatie (Ghlen Nagels - youngsource.be)
Digipinguins: containers en virtualisatie (Ghlen Nagels - youngsource.be)Digipinguins: containers en virtualisatie (Ghlen Nagels - youngsource.be)
Digipinguins: containers en virtualisatie (Ghlen Nagels - youngsource.be)
 
Lekker weer nlnog_how_to_avoid_buying_expensive_routers
Lekker weer nlnog_how_to_avoid_buying_expensive_routersLekker weer nlnog_how_to_avoid_buying_expensive_routers
Lekker weer nlnog_how_to_avoid_buying_expensive_routers
 
Bs 2 les 20110428
Bs 2   les 20110428Bs 2   les 20110428
Bs 2 les 20110428
 
ING : How top quality software and state-of-the-art technology leads to conti...
ING : How top quality software and state-of-the-art technology leads to conti...ING : How top quality software and state-of-the-art technology leads to conti...
ING : How top quality software and state-of-the-art technology leads to conti...
 
Deployment strategieën, WP Meetup Enschede, 26-02-2015
Deployment strategieën, WP Meetup Enschede, 26-02-2015Deployment strategieën, WP Meetup Enschede, 26-02-2015
Deployment strategieën, WP Meetup Enschede, 26-02-2015
 
2010 byte joomladagen
2010 byte joomladagen2010 byte joomladagen
2010 byte joomladagen
 
8 tips voor goed beheer
8 tips voor goed beheer8 tips voor goed beheer
8 tips voor goed beheer
 
Ditp backupserver
Ditp backupserverDitp backupserver
Ditp backupserver
 
Drupal Deployment demo
Drupal Deployment demoDrupal Deployment demo
Drupal Deployment demo
 

CFEngine Roadshow Maiden Voyage Cohesion Techsessie

  • 1. Cohesion CFEngine Techsessie 9 october 2014 Hans Spaans Cohesion Martin Simons Webhuis
  • 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
  • 7. Automation Stappen in ontwikkeling ● Scripting ● Golden Image ● Third wave Gespecialiseerde Automation producten
  • 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
  • 22. Gewenste situatie root@ips-161:/home# ls -laR cferoadshow/ cferoadshow/: total 12 drwxr-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 files cferoadshow/files: total 8 drwxr-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 code bundle 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 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
  • 30. Webservice Policy bundle agent deploy_webservice { vars: any:: "package_name" slist => { "tomcat6", "java" }; packages: any:: "${package_name}" package_policy => "add", package_method => apt; }
  • 31. Deploy_war Policy bundle 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 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