SlideShare a Scribd company logo
24/09/2011




  Configuration Management
   Automating and rationalizing server setup with CFEngine 3




Jonathan Clarke   <jcl@normation.com>

                           
About the speaker
Jonathan Clarke                → CTO →

Sysadmin background                  Startup created in 2010
Infrastructure management            Based in Paris
FLOSS contributor:                   Configuration management:
  CFEngine
                                            CFEngine (partner)
  Others (OpenLDAP, LSC,
  FusionInventory...)                       Rudder (creator)




                            
Introduction

                          1. CREATE
                          2. SETUP
                          3. USE
                          4. THROW AWAY
    Cloud Computing




                       
Introduction

                           1. CREATE
                           2. SETUP
                           3. USE
                           4. THROW AWAY
     Cloud Computing



  → APIs and tools are available




                        
Introduction

                            1. CREATE
                            2. SETUP
                            3. USE
                            4. THROW AWAY
      Cloud Computing


 Three approaches:
  1. Manually
  2. Imaging
  3. Configuration tool

                         
Agenda

1) Configuration Management principles
2) Configuration Management tools
3) About CFEngine 3
4) Getting started




                  
Configuration Management
     Principles through examples...




                
A server crashed.

               Install a new one, people
                 can't work without it!

OK, it'll be done in
about two days...



            Why configuration management?

                                  There's a new critical security patch
                                  we must deploy on all our servers!

                                                               Get it out quickly!

                                  Right, I'll put the whole
                                  team on it.




                               
Reproducibility    Industrialization



              Automation


                Why configuration management?




                              
How do we setup
   service X?

                     Ask Jim, he's
                   the expert on that.

But he left the company...



               Why configuration management?
                                         Huh, this server has been logging
                                         errors for a few weeks.

                                                          Oh? I think Michael changed
                                                          something on it recently...
                                                          He'll tell you what it was.

                                         Damn, he's on vacation!




                                  
Documentation     History



                           Building-up
                           knowledge


    Why configuration management?




              
An intruder just stole our data
using a vulnerability in a
module we don't need...
                                    I thought the project specification
                                    ensured that we disabled that?
Er, it did, but we enabled it to
solve a problem and forgot to
disable it afterwards... sorry...


        Why configuration management?




                             
Why configuration management?


              Continuous
               vigilance


Automatic repairs     Alerts


                            
I don't understand how this
     server is setup. It doesn't match
     our best-practices.


                           Oh, that's a legacy server...



       Why configuration management?

                                              Give me details on our
                                              current security policy.
    Well, it's a collection of little
    things, here and there...

                                            Ah... Well, OK.
                                            Tell me: is it fully applied
                                            on all our critical servers?
    Er...




                              
Why configuration management?



                           Rationalization


                    Normalization     Control


              
Reproducibility    Industrialization   Documentation     History



           Automation                            Building-up
                                                 knowledge


               Configuration management benefits


           Continuous
                                               Rationalization
            vigilance


Automatic repairs        Alerts         Normalization     Control


                               
Configuration Management
        The tools




         
Main tools available


 CFEngine 3       Puppet   Chef




               
Main tools available: history




                         Relative origins of CFEngine, Puppet and Chef


Source:
http://verticalsysadmin.com/blog/uncategorized/relative-origins-o
f-cfengine-chef-and-puppet

                                           
The tools: similarities
                   CFEngine 3             Puppet            Chef




   Common origins         Designed specifically    Text-based / CLI
                            for configuration         interface
                              management




 Client-server model
 (sometimes optional)         Open Source


                           
The tools: some differences
                  CFEngine 3    Puppet       Chef




                      C          Ruby        Ruby
   Language


                     GPL        Apache       Apache
                               (ex-GPL)
    License


                     Yes       Preliminary   Partial
Windows support




                            
A bit about CFEngine 3...




         
CFEngine 3: Features
                                  Multi platform




      Windows support

 Two versions:

 1. Community (open source)
     Runs in Cygwin

 2. Nova (commercial)
   ● Native Windows service




                               
CFEngine 3: Features


                 Multi-OS
             Multi-distribution
                                          Adapted to
        Make it ”transparent” (forget   heterogeneous
        about the complexity)            environments

        Existing standard library
        handling the differences
        between each OS and
        distribution




                           
CFEngine 3: Features



Lightweight, non-intrusive




        Non-intrusive
                                 Daemon consumption on managed hosts
 Only two dependencies:
 - BerkeleyDB
 - OpenSSL




                              
CFEngine 3: Features




                   Evolution of CPU utilization
          for an increasing number of managed hosts     Highly scalable

                     From 25 to 400 clients (x16)
                   CPU utilization increases by 1.16%

Notes:
• Each host runs CFEngine every 5 minutes

• Configuration tested sets up Apache web server

• Tests and monitoring using AWS




                                           
CFEngine 3: Features
                                 Multi platform




                                                       Adapted to
Lightweight, non-intrusive                           heterogeneous
                                                      environments



       Autonomous
       Fault-tolerant                             Highly scalable
                                  Progressive
                                    roll-out




                              
Getting started with CFEngine 3




            
CFEngine 3: Installing
   Install from sources:
              http://www.cfengine.com/source_code


   Prebuilt packages:
              Debian / SuSE / Fedora / RHEL / Ubuntu
              Requires free signup
              https://cfengine.com/inside/myspace




                            
CFEngine 3: Client-Server
   Using a server is optional!
              Get started by running standalone

   CFEngine's server daemon is cf-serverd
              Dedicated protocol: TCP port 5308
              Requires SSL key exchange




                            
CFEngine 3: Configuration
   Minimal configuration:
    body common control
    {
      bundlesequence => { "HelloWorld" };
    }
                                                 Syntax notes

    bundle agent HelloWorld                 Whitespace doesn't count
    {                                        Comments follow #
      # This will output "Hello World!"
      commands:
        "/bin/echo Hello World!";
    }

               Structure notes

     ●   Structures are created using { }
     ●   Structures are bundles or bodies



                                  
CFEngine 3: Configuration
   Promise types:
                   Promise types            Promise types
                   (all versions)        (commercial versions)
           files                         environments
           packages                      services
           processes                     databases
           commands
           storage
           interfaces (for future use)



                   Special types             Special types
                   (all versions)        (commercial versions)
           vars                          outputs
           classes
           methods
           reports


                                
CFEngine 3: Examples
   Install and update the LAMP stack
    bundle agent lamp {
      vars:
       "packages" slist => { "httpd", "php5", "mysql" };

      packages:
        "${packages}"
          package_method => generic,
          package_method => "addupdate";
    }




                         
CFEngine 3: Examples
   Install Apache with distribution variations
    packages:
      debian::
         "apache2"
           package_policy => "add",
           package_method => apt;

       centos|redhat::
         "httpd"
            package_policy => "add",
            package_method => yum;




                      
24/09/2011




             Thanks for participating!


Stay in touch...



Jonathan Clarke
Email: jcl@normation.com
Twitter: jooooooon42

                            

More Related Content

PDF
Configuration management 101 - A tale of disaster recovery using CFEngine 3
ODP
Cfengine presentation at the RMLL
PDF
Nakajima numa-final
PDF
XS Japan 2008 Ganeti English
PDF
Ian Pratt Usenix 08 Keynote
PDF
XS Boston 2008 Fault Tolerance
PDF
Automatic systems installations and change management wit FAI - Talk for Netw...
PPSX
Cvc2009 Moscow Xen App5 Fp1 Fabian Kienle Final
Configuration management 101 - A tale of disaster recovery using CFEngine 3
Cfengine presentation at the RMLL
Nakajima numa-final
XS Japan 2008 Ganeti English
Ian Pratt Usenix 08 Keynote
XS Boston 2008 Fault Tolerance
Automatic systems installations and change management wit FAI - Talk for Netw...
Cvc2009 Moscow Xen App5 Fp1 Fabian Kienle Final

What's hot (20)

PPTX
Acme Packet Provisioning Framework
PDF
XS Oracle 2009 Vm Snapshots
PDF
I/O Scalability in Xen
PDF
Linux Foundation Collaboration Summit 13 :10 years of Xen and Beyond
PDF
Nakajima hvm-be final
PDF
TSM 6.4 Technical updates
PDF
Automated installations and infrastructure management with FAI
PPTX
Performance Profiling of Virtual Machines
PPTX
PCoIP and More - VMware View - Performance and Best Practices
PDF
Cloud infrastructure licensing_v2
PDF
Big ip-ltm-asm-dg
PDF
Linux Desktop Automation
PPTX
Keynote Speech: Xen ARM Virtualization
PPTX
It camp veeam presentation (no videos)
PPTX
Realtime scheduling for virtual machines in SKT
PPTX
Performance Profiling in a Virtualized Environment
PDF
XS Boston 2008 Project Status
PPTX
Single Console for viewing OpManager & DeviceExpert Alarms
PDF
XS Oracle 2009 Intro Slides
PDF
XS Boston 2008 Self IO Emulation
Acme Packet Provisioning Framework
XS Oracle 2009 Vm Snapshots
I/O Scalability in Xen
Linux Foundation Collaboration Summit 13 :10 years of Xen and Beyond
Nakajima hvm-be final
TSM 6.4 Technical updates
Automated installations and infrastructure management with FAI
Performance Profiling of Virtual Machines
PCoIP and More - VMware View - Performance and Best Practices
Cloud infrastructure licensing_v2
Big ip-ltm-asm-dg
Linux Desktop Automation
Keynote Speech: Xen ARM Virtualization
It camp veeam presentation (no videos)
Realtime scheduling for virtual machines in SKT
Performance Profiling in a Virtualized Environment
XS Boston 2008 Project Status
Single Console for viewing OpManager & DeviceExpert Alarms
XS Oracle 2009 Intro Slides
XS Boston 2008 Self IO Emulation
Ad

Viewers also liked (11)

PPSX
Salaat
PDF
A tale of Disaster Recovery (Cfengine everyday, practices and tools)
PDF
Fall in Love with Russia, CCS Webinar Presentation
ODP
LSC - Synchronizing identities @ Loadays 2010
PDF
QL-IjmFT6Ub
PDF
Volunteer Abroad in India - 16 Years and Counting
PPT
Volunteer in Russica: Learn From CCS Alumni - CCS Webinar Presentation
PDF
Sharing automation - why we need a language like ncf for this (Ignite @ devop...
PPT
Why Volunteer Abroad? A Look at FAQs - CCS Webinar Presentation
PDF
Rudder 3.0 and beyond
PPTX
ZNetLive- A Quick Overview
Salaat
A tale of Disaster Recovery (Cfengine everyday, practices and tools)
Fall in Love with Russia, CCS Webinar Presentation
LSC - Synchronizing identities @ Loadays 2010
QL-IjmFT6Ub
Volunteer Abroad in India - 16 Years and Counting
Volunteer in Russica: Learn From CCS Alumni - CCS Webinar Presentation
Sharing automation - why we need a language like ncf for this (Ignite @ devop...
Why Volunteer Abroad? A Look at FAQs - CCS Webinar Presentation
Rudder 3.0 and beyond
ZNetLive- A Quick Overview
Ad

Similar to Configuration management: automating and rationalizing server setup with CFEngine 3 (Open World Forum 2011) (20)

PDF
Getting started with Puppet
PDF
Rudder - Configuration management benefits for everyone (FOSDEM 2012)
PDF
A tale of Disaster Recovery (Cfengine everyday, practices and tools)
PDF
Configuration management benefits for everyone - Rudder @ FLOSSUK Spring Conf...
PPTX
Cloud Application Security: Lessons Learned
PPTX
Continuous Delivery in the Cloud
PPTX
Continuous Delivery in the AWS Cloud
PPTX
Infrastructure Automation with Chef & Ansible
PPT
IBM PureFlex System Live Demo Outline: A scenario
PDF
Newvem Community - Cloud Management
PDF
Cloud Management
PPTX
Virtualization 101: Everything You Need To Know To Get Started With VMware
PDF
Ansible, MongoDB Ops Manager and AWS v1.1
PPTX
Cloud Application Security: Lessons Learned
ODP
Mcollective introduction
PPTX
LAST Conference - Dev-Ops and Continuous Delivery
PDF
Introducing CQ 5.1
PPT
Joanna Rutkowska Subverting Vista Kernel
PPTX
DevOps, A brief introduction to Vagrant & Ansible
PDF
Handout2o
Getting started with Puppet
Rudder - Configuration management benefits for everyone (FOSDEM 2012)
A tale of Disaster Recovery (Cfengine everyday, practices and tools)
Configuration management benefits for everyone - Rudder @ FLOSSUK Spring Conf...
Cloud Application Security: Lessons Learned
Continuous Delivery in the Cloud
Continuous Delivery in the AWS Cloud
Infrastructure Automation with Chef & Ansible
IBM PureFlex System Live Demo Outline: A scenario
Newvem Community - Cloud Management
Cloud Management
Virtualization 101: Everything You Need To Know To Get Started With VMware
Ansible, MongoDB Ops Manager and AWS v1.1
Cloud Application Security: Lessons Learned
Mcollective introduction
LAST Conference - Dev-Ops and Continuous Delivery
Introducing CQ 5.1
Joanna Rutkowska Subverting Vista Kernel
DevOps, A brief introduction to Vagrant & Ansible
Handout2o

More from Jonathan Clarke (6)

PDF
Interfacing infrastructure-as-code with non-expert users
PDF
What is new in CFEngine 3.6
PDF
Automating security policies (compliance) with Rudder
PDF
OpenLDAP - Astuces pour en faire l'annuaire d'entreprise idéal
PDF
LDAP Synchronization Connector presentation at LDAPCon 2009
ODP
LDAP Synchronization Connector (LSC)
Interfacing infrastructure-as-code with non-expert users
What is new in CFEngine 3.6
Automating security policies (compliance) with Rudder
OpenLDAP - Astuces pour en faire l'annuaire d'entreprise idéal
LDAP Synchronization Connector presentation at LDAPCon 2009
LDAP Synchronization Connector (LSC)

Recently uploaded (20)

PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Approach and Philosophy of On baking technology
PDF
KodekX | Application Modernization Development
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Encapsulation theory and applications.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
cuic standard and advanced reporting.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Digital-Transformation-Roadmap-for-Companies.pptx
The AUB Centre for AI in Media Proposal.docx
Reach Out and Touch Someone: Haptics and Empathic Computing
Approach and Philosophy of On baking technology
KodekX | Application Modernization Development
“AI and Expert System Decision Support & Business Intelligence Systems”
Advanced methodologies resolving dimensionality complications for autism neur...
Building Integrated photovoltaic BIPV_UPV.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Encapsulation theory and applications.pdf
NewMind AI Weekly Chronicles - August'25 Week I
MIND Revenue Release Quarter 2 2025 Press Release
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Spectral efficient network and resource selection model in 5G networks
Programs and apps: productivity, graphics, security and other tools
Unlocking AI with Model Context Protocol (MCP)
cuic standard and advanced reporting.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf

Configuration management: automating and rationalizing server setup with CFEngine 3 (Open World Forum 2011)

  • 1. 24/09/2011 Configuration Management Automating and rationalizing server setup with CFEngine 3 Jonathan Clarke <jcl@normation.com>    
  • 2. About the speaker Jonathan Clarke → CTO → Sysadmin background Startup created in 2010 Infrastructure management Based in Paris FLOSS contributor: Configuration management: CFEngine  CFEngine (partner) Others (OpenLDAP, LSC, FusionInventory...)  Rudder (creator)    
  • 3. Introduction 1. CREATE 2. SETUP 3. USE 4. THROW AWAY Cloud Computing    
  • 4. Introduction 1. CREATE 2. SETUP 3. USE 4. THROW AWAY Cloud Computing → APIs and tools are available    
  • 5. Introduction 1. CREATE 2. SETUP 3. USE 4. THROW AWAY Cloud Computing Three approaches: 1. Manually 2. Imaging 3. Configuration tool    
  • 6. Agenda 1) Configuration Management principles 2) Configuration Management tools 3) About CFEngine 3 4) Getting started    
  • 7. Configuration Management Principles through examples...    
  • 8. A server crashed. Install a new one, people can't work without it! OK, it'll be done in about two days... Why configuration management? There's a new critical security patch we must deploy on all our servers! Get it out quickly! Right, I'll put the whole team on it.    
  • 9. Reproducibility Industrialization Automation Why configuration management?    
  • 10. How do we setup service X? Ask Jim, he's the expert on that. But he left the company... Why configuration management? Huh, this server has been logging errors for a few weeks. Oh? I think Michael changed something on it recently... He'll tell you what it was. Damn, he's on vacation!    
  • 11. Documentation History Building-up knowledge Why configuration management?    
  • 12. An intruder just stole our data using a vulnerability in a module we don't need... I thought the project specification ensured that we disabled that? Er, it did, but we enabled it to solve a problem and forgot to disable it afterwards... sorry... Why configuration management?    
  • 13. Why configuration management? Continuous vigilance Automatic repairs Alerts    
  • 14. I don't understand how this server is setup. It doesn't match our best-practices. Oh, that's a legacy server... Why configuration management? Give me details on our current security policy. Well, it's a collection of little things, here and there... Ah... Well, OK. Tell me: is it fully applied on all our critical servers? Er...    
  • 15. Why configuration management? Rationalization Normalization Control    
  • 16. Reproducibility Industrialization Documentation History Automation Building-up knowledge Configuration management benefits Continuous Rationalization vigilance Automatic repairs Alerts Normalization Control    
  • 17. Configuration Management The tools    
  • 18. Main tools available CFEngine 3 Puppet Chef    
  • 19. Main tools available: history Relative origins of CFEngine, Puppet and Chef Source: http://verticalsysadmin.com/blog/uncategorized/relative-origins-o f-cfengine-chef-and-puppet    
  • 20. The tools: similarities CFEngine 3 Puppet Chef Common origins Designed specifically Text-based / CLI for configuration interface management Client-server model (sometimes optional) Open Source    
  • 21. The tools: some differences CFEngine 3 Puppet Chef C Ruby Ruby Language GPL Apache Apache (ex-GPL) License Yes Preliminary Partial Windows support    
  • 22. A bit about CFEngine 3...    
  • 23. CFEngine 3: Features Multi platform Windows support Two versions: 1. Community (open source) Runs in Cygwin 2. Nova (commercial) ● Native Windows service    
  • 24. CFEngine 3: Features Multi-OS Multi-distribution Adapted to Make it ”transparent” (forget heterogeneous about the complexity) environments Existing standard library handling the differences between each OS and distribution    
  • 25. CFEngine 3: Features Lightweight, non-intrusive Non-intrusive Daemon consumption on managed hosts Only two dependencies: - BerkeleyDB - OpenSSL    
  • 26. CFEngine 3: Features Evolution of CPU utilization for an increasing number of managed hosts Highly scalable From 25 to 400 clients (x16) CPU utilization increases by 1.16% Notes: • Each host runs CFEngine every 5 minutes • Configuration tested sets up Apache web server • Tests and monitoring using AWS    
  • 27. CFEngine 3: Features Multi platform Adapted to Lightweight, non-intrusive heterogeneous environments Autonomous Fault-tolerant Highly scalable Progressive roll-out    
  • 28. Getting started with CFEngine 3    
  • 29. CFEngine 3: Installing  Install from sources:  http://www.cfengine.com/source_code  Prebuilt packages:  Debian / SuSE / Fedora / RHEL / Ubuntu  Requires free signup  https://cfengine.com/inside/myspace    
  • 30. CFEngine 3: Client-Server  Using a server is optional!  Get started by running standalone  CFEngine's server daemon is cf-serverd  Dedicated protocol: TCP port 5308  Requires SSL key exchange    
  • 31. CFEngine 3: Configuration  Minimal configuration: body common control { bundlesequence => { "HelloWorld" }; } Syntax notes bundle agent HelloWorld Whitespace doesn't count { Comments follow # # This will output "Hello World!" commands: "/bin/echo Hello World!"; } Structure notes ● Structures are created using { } ● Structures are bundles or bodies    
  • 32. CFEngine 3: Configuration  Promise types: Promise types Promise types (all versions) (commercial versions) files environments packages services processes databases commands storage interfaces (for future use) Special types Special types (all versions) (commercial versions) vars outputs classes methods reports    
  • 33. CFEngine 3: Examples  Install and update the LAMP stack bundle agent lamp {   vars: "packages" slist => { "httpd", "php5", "mysql" };   packages:     "${packages}"       package_method => generic,       package_method => "addupdate"; }    
  • 34. CFEngine 3: Examples  Install Apache with distribution variations packages: debian:: "apache2" package_policy => "add", package_method => apt; centos|redhat:: "httpd" package_policy => "add", package_method => yum;    
  • 35. 24/09/2011 Thanks for participating! Stay in touch... Jonathan Clarke Email: jcl@normation.com Twitter: jooooooon42