SlideShare a Scribd company logo
1 of 21
Cfengine presentation

- Configuration
management
- Promise technology
- Cfengine features
- Real-life examples
About the speaker
         Nicolas CHARLES : nicolas.charles@normation.com
                 Developer in different languages and fields for the past
                  7 years
                 2009, cofounded Normation
                 Active member of the Cfengine community

         Normation
                 Software company
                       Compliance                               and Drift assessment
                 Cfengine partner
                 Consulting on Identity and Service Management

© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.      2
Why should I manage configurations?




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   3
History of configuration management




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   4
Some Cfengine users
          Long track-record with millions servers managed
           by thousands registered users including:




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   5
Promise Technology
          Based on Promise Theory
                   Goals are invariants
                   Recipes depend on circumstances

          Simple connection to « Service Level
           Agreements »
                   Promise that an Apache server is up and running

          A promise is a documentation by itself




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   6
Convergence
          Promises focus on the desired state
          Convergence is built in Cfengine




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   7
Cfengine features




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   8
Cfengine agent
          Agent installed on each server
                   Written in C
                   Cross platform (Linux, Unixes, *BSD, Windows,
                    MacOS)
                   Few external dependencies (OpenSSL, [PCRE])
                   Very small memory footprint (less than 30 MB)




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   9
Cfengine agent

          Aware of the computer's configuration
          Autonomous
          Automated
          Continuous operation
          Reliable : only one vulnerability on 17 years




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   10
Cfengine architecture




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   11
Cfengine architecture
          Each node is responsible for its own state
                   High scalability
                   Resilient to network outage

          Agents use external resources on demand
                   Fetch policies updates from orchestrator
                   Package management integration
                   LDAP and Database integration*




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   12
Installation
          Installation packages available for :
                   CentOS
                   Debian
                   Fedora
                   FreeBSD*
                   RedHat
                   Solaris*
                   SUSE
                   Ubuntu
                   Windows*


© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   13
Generic promise syntax

       type:
      classe::
       "promiser" ­> { "promisee1", "promisee2" },
          attribute_1 => body_or_template1,
          attribute_2 => body_or_template2;




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   14
Generic promise syntax
    Types                      :
            vars
            classes
            interfaces
            processes
            storage
            packages
            commands
            methods
            files
            databases*
            services*
            reports




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   15
Use library
   body common control {
     bundlesequence => { "packages" };
     inputs => {"cfengine_stdlib.cf"};
   }

 bundle agent packages {
   vars:
     "match_package" slist => {
         "airstrike", "sudoku"
 #       "apache2-mod_php5", "apache2-prefork", "php5"
     };
   packages:
     "$(match_package)"
         package_policy => "add",
         package_method => apt;
 }


© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   16
Examples




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   17
A word of caution

      body common control {
       bundlesequence => { "killall" };
      }
      bundle agent killall {
       processes:
                          ".*"
                             signals => { "kill" };
      }
                                                                    Don't try this at home !

© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.             18
Acknowledgements
          Mark Burgess
                   Wrote Cfengine
                   Borrowed heavily from him :
                             Cfengine Reborn, Paris, 2009
                             http://cfengine.com/pages/demos

          Loadays
                   Thank you for this conference




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   19
Want more ?


         http://www.cfengine.org/
         https://cfengine.com/forum/
         Mailing-list : help-cfengine@cfengine.org
         IRC : freenode #cfengine




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.   20
Q&A
                                                                                     Thank you for your attention !




© Normation 2010 -  Tous droits réservés – Document strictement confidentiel.
Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable.                                    21

More Related Content

More from RUDDER

What if configuration management didn't need to be lvl60 in dev?
What if configuration management didn't need to be lvl60 in dev?What if configuration management didn't need to be lvl60 in dev?
What if configuration management didn't need to be lvl60 in dev?RUDDER
 
Servers compliance: audit, remediation, proof
Servers compliance: audit, remediation, proofServers compliance: audit, remediation, proof
Servers compliance: audit, remediation, proofRUDDER
 
OSIS 2019 - Qu’apporte l’observabilité à la gestion de configuration ?
OSIS 2019 - Qu’apporte l’observabilité à la gestion de configuration ?OSIS 2019 - Qu’apporte l’observabilité à la gestion de configuration ?
OSIS 2019 - Qu’apporte l’observabilité à la gestion de configuration ?RUDDER
 
OW2Con - Configurations, do you prove yours?
OW2Con - Configurations, do you prove yours?OW2Con - Configurations, do you prove yours?
OW2Con - Configurations, do you prove yours?RUDDER
 
The new plugin ecosystem in RUDDER 5.0
The new plugin ecosystem in RUDDER 5.0The new plugin ecosystem in RUDDER 5.0
The new plugin ecosystem in RUDDER 5.0RUDDER
 
What uses for observing operations of Configuration Management?
What uses for observing operations of Configuration Management?What uses for observing operations of Configuration Management?
What uses for observing operations of Configuration Management?RUDDER
 
UX challenges of a UI-centric config management tool
UX challenges of a UI-centric config management toolUX challenges of a UI-centric config management tool
UX challenges of a UI-centric config management toolRUDDER
 
What happened in RUDDER in 2018 and what’s next?
What happened in RUDDER in 2018 and what’s next?What happened in RUDDER in 2018 and what’s next?
What happened in RUDDER in 2018 and what’s next?RUDDER
 
What is RUDDER and when should I use it?
What is RUDDER and when should I use it?What is RUDDER and when should I use it?
What is RUDDER and when should I use it?RUDDER
 
Fosdem - Configurations do you prove yours?
Fosdem - Configurations  do you prove yours?Fosdem - Configurations  do you prove yours?
Fosdem - Configurations do you prove yours?RUDDER
 
L'audit en continu : clé de la conformité démontrable (#POSS 2018)
L'audit en continu : clé de la conformité démontrable (#POSS 2018)L'audit en continu : clé de la conformité démontrable (#POSS 2018)
L'audit en continu : clé de la conformité démontrable (#POSS 2018)RUDDER
 
Fiabilité et conformité continues en production avec Rudder (#BBOOST 2018)
Fiabilité et conformité continues en production avec Rudder (#BBOOST 2018)Fiabilité et conformité continues en production avec Rudder (#BBOOST 2018)
Fiabilité et conformité continues en production avec Rudder (#BBOOST 2018)RUDDER
 
Stay up - voyage d'un éditeur de logiciels libres
Stay up - voyage d'un éditeur de logiciels libresStay up - voyage d'un éditeur de logiciels libres
Stay up - voyage d'un éditeur de logiciels libresRUDDER
 
How we scaled Rudder to 10k, and the road to 50k
How we scaled Rudder to 10k, and the road to 50kHow we scaled Rudder to 10k, and the road to 50k
How we scaled Rudder to 10k, and the road to 50kRUDDER
 
What's new and what's next in Rudder
What's new and what's next in RudderWhat's new and what's next in Rudder
What's new and what's next in RudderRUDDER
 
Poss 2017 : gestion des configurations et mise en conformité chez un service ...
Poss 2017 : gestion des configurations et mise en conformité chez un service ...Poss 2017 : gestion des configurations et mise en conformité chez un service ...
Poss 2017 : gestion des configurations et mise en conformité chez un service ...RUDDER
 
Poss 2017 - la continuité, arme secrète de la gestion du si - cas concret de ...
Poss 2017 - la continuité, arme secrète de la gestion du si - cas concret de ...Poss 2017 - la continuité, arme secrète de la gestion du si - cas concret de ...
Poss 2017 - la continuité, arme secrète de la gestion du si - cas concret de ...RUDDER
 
POSS 2017 : Comment automatiser son infrastructure quand... on a pas le temps...
POSS 2017 : Comment automatiser son infrastructure quand... on a pas le temps...POSS 2017 : Comment automatiser son infrastructure quand... on a pas le temps...
POSS 2017 : Comment automatiser son infrastructure quand... on a pas le temps...RUDDER
 
DevOps D-Day 2017 - Gestion des configurations et mise en conformité chez un ...
DevOps D-Day 2017 - Gestion des configurations et mise en conformité chez un ...DevOps D-Day 2017 - Gestion des configurations et mise en conformité chez un ...
DevOps D-Day 2017 - Gestion des configurations et mise en conformité chez un ...RUDDER
 
RUDDER - Continuous Configuration (configuration management + continuous aud...
 RUDDER - Continuous Configuration (configuration management + continuous aud... RUDDER - Continuous Configuration (configuration management + continuous aud...
RUDDER - Continuous Configuration (configuration management + continuous aud...RUDDER
 

More from RUDDER (20)

What if configuration management didn't need to be lvl60 in dev?
What if configuration management didn't need to be lvl60 in dev?What if configuration management didn't need to be lvl60 in dev?
What if configuration management didn't need to be lvl60 in dev?
 
Servers compliance: audit, remediation, proof
Servers compliance: audit, remediation, proofServers compliance: audit, remediation, proof
Servers compliance: audit, remediation, proof
 
OSIS 2019 - Qu’apporte l’observabilité à la gestion de configuration ?
OSIS 2019 - Qu’apporte l’observabilité à la gestion de configuration ?OSIS 2019 - Qu’apporte l’observabilité à la gestion de configuration ?
OSIS 2019 - Qu’apporte l’observabilité à la gestion de configuration ?
 
OW2Con - Configurations, do you prove yours?
OW2Con - Configurations, do you prove yours?OW2Con - Configurations, do you prove yours?
OW2Con - Configurations, do you prove yours?
 
The new plugin ecosystem in RUDDER 5.0
The new plugin ecosystem in RUDDER 5.0The new plugin ecosystem in RUDDER 5.0
The new plugin ecosystem in RUDDER 5.0
 
What uses for observing operations of Configuration Management?
What uses for observing operations of Configuration Management?What uses for observing operations of Configuration Management?
What uses for observing operations of Configuration Management?
 
UX challenges of a UI-centric config management tool
UX challenges of a UI-centric config management toolUX challenges of a UI-centric config management tool
UX challenges of a UI-centric config management tool
 
What happened in RUDDER in 2018 and what’s next?
What happened in RUDDER in 2018 and what’s next?What happened in RUDDER in 2018 and what’s next?
What happened in RUDDER in 2018 and what’s next?
 
What is RUDDER and when should I use it?
What is RUDDER and when should I use it?What is RUDDER and when should I use it?
What is RUDDER and when should I use it?
 
Fosdem - Configurations do you prove yours?
Fosdem - Configurations  do you prove yours?Fosdem - Configurations  do you prove yours?
Fosdem - Configurations do you prove yours?
 
L'audit en continu : clé de la conformité démontrable (#POSS 2018)
L'audit en continu : clé de la conformité démontrable (#POSS 2018)L'audit en continu : clé de la conformité démontrable (#POSS 2018)
L'audit en continu : clé de la conformité démontrable (#POSS 2018)
 
Fiabilité et conformité continues en production avec Rudder (#BBOOST 2018)
Fiabilité et conformité continues en production avec Rudder (#BBOOST 2018)Fiabilité et conformité continues en production avec Rudder (#BBOOST 2018)
Fiabilité et conformité continues en production avec Rudder (#BBOOST 2018)
 
Stay up - voyage d'un éditeur de logiciels libres
Stay up - voyage d'un éditeur de logiciels libresStay up - voyage d'un éditeur de logiciels libres
Stay up - voyage d'un éditeur de logiciels libres
 
How we scaled Rudder to 10k, and the road to 50k
How we scaled Rudder to 10k, and the road to 50kHow we scaled Rudder to 10k, and the road to 50k
How we scaled Rudder to 10k, and the road to 50k
 
What's new and what's next in Rudder
What's new and what's next in RudderWhat's new and what's next in Rudder
What's new and what's next in Rudder
 
Poss 2017 : gestion des configurations et mise en conformité chez un service ...
Poss 2017 : gestion des configurations et mise en conformité chez un service ...Poss 2017 : gestion des configurations et mise en conformité chez un service ...
Poss 2017 : gestion des configurations et mise en conformité chez un service ...
 
Poss 2017 - la continuité, arme secrète de la gestion du si - cas concret de ...
Poss 2017 - la continuité, arme secrète de la gestion du si - cas concret de ...Poss 2017 - la continuité, arme secrète de la gestion du si - cas concret de ...
Poss 2017 - la continuité, arme secrète de la gestion du si - cas concret de ...
 
POSS 2017 : Comment automatiser son infrastructure quand... on a pas le temps...
POSS 2017 : Comment automatiser son infrastructure quand... on a pas le temps...POSS 2017 : Comment automatiser son infrastructure quand... on a pas le temps...
POSS 2017 : Comment automatiser son infrastructure quand... on a pas le temps...
 
DevOps D-Day 2017 - Gestion des configurations et mise en conformité chez un ...
DevOps D-Day 2017 - Gestion des configurations et mise en conformité chez un ...DevOps D-Day 2017 - Gestion des configurations et mise en conformité chez un ...
DevOps D-Day 2017 - Gestion des configurations et mise en conformité chez un ...
 
RUDDER - Continuous Configuration (configuration management + continuous aud...
 RUDDER - Continuous Configuration (configuration management + continuous aud... RUDDER - Continuous Configuration (configuration management + continuous aud...
RUDDER - Continuous Configuration (configuration management + continuous aud...
 

Cfengine presentation @Loadays

  • 1. Cfengine presentation - Configuration management - Promise technology - Cfengine features - Real-life examples
  • 2. About the speaker  Nicolas CHARLES : nicolas.charles@normation.com  Developer in different languages and fields for the past 7 years  2009, cofounded Normation  Active member of the Cfengine community  Normation  Software company  Compliance and Drift assessment  Cfengine partner  Consulting on Identity and Service Management © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 2
  • 3. Why should I manage configurations? © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 3
  • 4. History of configuration management © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 4
  • 5. Some Cfengine users  Long track-record with millions servers managed by thousands registered users including: © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 5
  • 6. Promise Technology  Based on Promise Theory  Goals are invariants  Recipes depend on circumstances  Simple connection to « Service Level Agreements »  Promise that an Apache server is up and running  A promise is a documentation by itself © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 6
  • 7. Convergence  Promises focus on the desired state  Convergence is built in Cfengine © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 7
  • 8. Cfengine features © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 8
  • 9. Cfengine agent  Agent installed on each server  Written in C  Cross platform (Linux, Unixes, *BSD, Windows, MacOS)  Few external dependencies (OpenSSL, [PCRE])  Very small memory footprint (less than 30 MB) © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 9
  • 10. Cfengine agent  Aware of the computer's configuration  Autonomous  Automated  Continuous operation  Reliable : only one vulnerability on 17 years © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 10
  • 11. Cfengine architecture © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 11
  • 12. Cfengine architecture  Each node is responsible for its own state  High scalability  Resilient to network outage  Agents use external resources on demand  Fetch policies updates from orchestrator  Package management integration  LDAP and Database integration* © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 12
  • 13. Installation  Installation packages available for :  CentOS  Debian  Fedora  FreeBSD*  RedHat  Solaris*  SUSE  Ubuntu  Windows* © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 13
  • 14. Generic promise syntax type:  classe::   "promiser" ­> { "promisee1", "promisee2" },      attribute_1 => body_or_template1,      attribute_2 => body_or_template2; © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 14
  • 15. Generic promise syntax  Types :  vars  classes  interfaces  processes  storage  packages  commands  methods  files  databases*  services*  reports © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 15
  • 16. Use library body common control { bundlesequence => { "packages" }; inputs => {"cfengine_stdlib.cf"}; } bundle agent packages { vars: "match_package" slist => { "airstrike", "sudoku" # "apache2-mod_php5", "apache2-prefork", "php5" }; packages: "$(match_package)" package_policy => "add", package_method => apt; } © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 16
  • 17. Examples © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 17
  • 18. A word of caution  body common control {   bundlesequence => { "killall" };  }  bundle agent killall {   processes: ".*"    signals => { "kill" };  } Don't try this at home ! © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 18
  • 19. Acknowledgements  Mark Burgess  Wrote Cfengine  Borrowed heavily from him :  Cfengine Reborn, Paris, 2009  http://cfengine.com/pages/demos  Loadays  Thank you for this conference © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 19
  • 20. Want more ?  http://www.cfengine.org/  https://cfengine.com/forum/  Mailing-list : help-cfengine@cfengine.org  IRC : freenode #cfengine © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 20
  • 21. Q&A Thank you for your attention ! © Normation 2010 -  Tous droits réservés – Document strictement confidentiel. Il ne peut être utilisé, reproduit ou divulgué sans autorisation écrite préalable. 21