Puppet integration in Ubuntu

Registered by Mathias Gug on 2009-04-26

What kind of integration of puppet should be provided at the distro level? Should we provide some generic templates to help bootstrapping a puppet based infrastructure?

Look at different services (apache, postfix) and provide puppet modules that deploy these services.

Blueprint information

Status:
Not started
Approver:
Rick Clark
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
Drafting
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

=================
Discussion from UDS Karmic

= Configuration management =

For ubuntu: both tools should survive and the best way to integrate in ubuntu.
The outcome of the discussion is not to choose a tool.
The goal is to gather information, requirements for each tools.

== Puppet ==
 * Has Mac support.
 * Some scaling issues noticed by Google, but were solved.
 * easy to write a parser for the dsl.

== Chef ==

Authentication: openid. Move to public key infrastructure.

 * More processing done on the server in near future version.
 * Experimentation with RabbitMQ for passsing config information.

Support both standalone and client/server mode.

== BCFG2 ==

 * Python-based
See http://paste.ubuntu.com/183674/ for notes

== cfengine ==

== augeas ==
  * Doesn't still support Apache configuration files
  * Allow direct modification of the config files without breaking anything

== Problems with Ruby ==

http://timetobleed.com/fix-a-bug-in-rubys-configurein-and-get-a-30-performance-boost/

pthreads mess up signal handling. Patch available in ruby above.

Ruby-enterprise edition is faster.

User of chef: none.

Chef:
 * For manifests push JSON.
 * langages binding: prototype in perl, lisp. REST API to drive chef.
 * Not in debian.

User of puppet:
google: comparison with cfengine - goobuntu using cfengine, mac group chose puppet, opensolaris, laptop group moved to puppet later. Fun time scaling puppet. Issue in ruby. Good experience working with luke - google dev involved with upstream. Upstream open to cooperation. Google's use helped puppet to scale. Took over Debian maintainance to push it faster to Ubuntu.
Wrote a few facts, and types. Needed to write some custom plugins before augeas support to do file editing.
  * Puppet supports augeas as a backend.

Bcfg2:
1000s. Had to fix some bug upstream (done).
Version 1.0 (to come very soon) supports more complex Package handling and a lot of bugfix.
Use xml for configuration storage and python as a language for complex templates (bcfg2 itself is python)
Reporting support with clients pushing information back to the server and then a website to see the stats.

Manifest language:
puppet has its own configuration language. Need to be able to generate the manifest file programatically. Tools will be actually used to generate the manifest.

Configuration mgmt system should provide an API.

Community health: new contributors, wiki editing, etc...

Some requirements:
* build over time a library of recipes/manifests. Each package would provide their own recipe/module/manifest.
* tools would provide machine parseable output.
* list of ressources available in programatic way.
* policy compliant - is the machine compliant with the manifest? Supported by puppet and chef. Need to get the delta.
* reporting support: chef/puppet makes the delta information available.
* able to run in dry-run mode.
* high level language: puppet dsl, bcfg2 dsl.
* validation of the configuration: bcfg2 may be the easiest.
* Integration with debconf configuration available from the package.

=================

(?)

Work Items