Principle• A client/server architecture.• The server has a reference configuration.• The client queries the server.• The client makes change in order to match the reference configuration.
Principle 1. “Can you give my configuration model ?“ 2. “Ok, for you, thats it.” 3. “I make the necessary in order to fulfil it.” 4. (optional) “Thank you, Im ok, no error” or “I had a problem”.
Why to do this ?• Centralized management• Automated management• Mass deployment• Configuration customization• Abstraction Layer• Idempotence
What can we do ?• File transfer• Service management• Package management• Command launching
Comparison 3 major solution : • Puppet • Chef • Cfengine Pretty similar possibilities. Some specificities.
Comparison Puppet Chef Cfengine Pull Yes Yes Yes Push No No No Idempotence Yes Yes Yes Config language Declarative Ruby Declarative Web UI Yes (limited) Yes No OS Support Linux/Unix – Linux/Unix – Linux Linux/Unix – Windows Windows Windows (experimental) (experimental) (experimental) Licence GPL v2 Apache GPL Company Puppet Labs OpsCode Cfengine Cloud Yes SaaS platform Yes
Puppet• Created in 2006 by Puppet Labs• The easiest solution• Proprietary declarative language• Modular configuration• Template• Asymmetric Key Encryption
Cfengine Cfengine has an atypical mechanism. There is neither cfengine-server nor cfengine-client package.
Cfengine Vocabulary • Promises • Body & bundle • Class
Cfengine•Bundles and bodies
Cfengine•With Cfengine, you have to do configure everything. From the promises, to the host authorized, or the failsafe procedure.
Cfengine vs Puppet vs Chef Cfengine is powerful. But... • Painful configuration • Have fun with log (excessively verbose... Or not.) • Seems outdated compared to Puppet and Chef Keep in mind that you have as much possibilities as Puppet & Chef. But the time you pass configuring and master it is incomparable.
Migration advices• Migration have to be progressive.• Writing configurations take time.• Be extremely rigorous.• Dont forget the revision control.
Questions?Contact:Email : firstname.lastname@example.orgStatusNet : email@example.comTwitter : @Jeyg Content under Creative Commons BY license.