SlideShare a Scribd company logo
Zenoss: Buildout
Alex Clark <aclark@aclark.net>
Plone Consultant, Author, Core Developer
Presented to BACON-PIG @ Zenoss HQ in Annapolis MD June 24 2009 &
Presented to ZPUGDC @ Radio Free Asia in Washington DC July 6, 2009
What is buildout?
A system to create complex, repeatable environments
via Windows ini style syntax
  Simplest buildout
    [buildout]
    parts=
  “Pluggable” with recipes, search PyPI (http://
  pypi.python.org) for ‘recipe’
Why are you doing this?

Ability to easily deploy Zenoss via buildout:
  % svn co http://svn.aclark.net/svn/public/zen/trunk zen

  % cd zen; python bootstrap.py; bin/buildout

Custom deployments featuring Zenoss + Plone.
Better understanding of your environment.
I like fiddling with buildout.
Aha, so you are insane then?
 No. Well, maybe, but there are other good reasons:
   Buildout has become the de facto standard in the Plone world for
   deploying repeatable apps, and I’d like to see its popularity spread.

   I’d also like to see some of Plone’s generally useful recipes be
   adopted by other open source projects.

 But buildout sucks! I.e. It is not as good as RPM, dpkg, etc.
   IMO, Buildout is NOT an alternative to packaging systems like rpm, dpkg, etc.
   but rather a complement to them.

   IOW, my general approach is to use system packages when I can easily use
   them, and to use buildout in cases where I need more control, repeatability,
   configuration management, etc.
System packages vs.
buildouts
System Packages
  Some things (e.g. libjpeg) may be better left to the OS (and
  whatever package management system it uses)

Buildout
  Some things may be better suited for buildout (particular when
  it is hard to get packages for the latest code, e.g. rrdtool)
OK, Tell me about the buildout then
 Mostly uses cmmi and command recipes. These recipes download
 packages, extract them, cd to the package dir then do: ./configure;
 make; make install. There are currently two competing recipes that
 perform the same function with subtle differences, they are:

        zc.recipe.cmmi
           Allows you to set environment variables, e.g. CFLAGS, PKG_CONFIG,
           etc

           Allows you to pass extra options to ./configure with ‘extra_options’ (e.g.
           extra_options=--with-expat=${expat:location})

        hexagonit.recipe.cmmi
           Allows you to do a post mortem via ‘keep_compile_dir = true’ option

           Allows you to pass extra options to ./configure with ‘configure-options’ (e.g.
           --configure_options=--with-expat=${expat:location})

 Depending on your needs, one, or the other, or both or either may be required.
So, what else does the buildout do?
 Satisfies Zenoss dependencies:

   Zope2
     Uses plone.recipe.zope2install to download and install the Zope 2 tarball.

   MySQL
     Uses zc.recipe.cmmi recipe to build the package.

     Uses zc.recipe.egg to configure environment variables.

   rrdtool
     Uses zc.recipe.cmmi/hexagonit.recipe.cmmi recipes to build the package and
     it dependencies:

        cairo/pango, glib/gtk, gettext, fontconfig, etc.

   Zenoss Zope 2 Products

     Uses subversion svn:externals property to pull down Zenoss 2.3.x.
Enough. Show me the
buildout already!

Glad you asked, please see the commented buildout
at:
  http://svn.aclark.net/svn/public/buildout/zenoss/
  trunk
The End!
     Thank you for reading.
Questions/Comments/Concerns/WantToHelp?
 Please e-mail: aclark@aclark.net
 For your Plone consulting & hosting needs, please
 visit my website: http://aclark.net.
 For the latest on my (Plone and other related)
 activities, please follow me on Twitter: http://
 twitter.com/aclark4life.

More Related Content

Zenoss: Buildout

  • 1. Zenoss: Buildout Alex Clark <aclark@aclark.net> Plone Consultant, Author, Core Developer Presented to BACON-PIG @ Zenoss HQ in Annapolis MD June 24 2009 & Presented to ZPUGDC @ Radio Free Asia in Washington DC July 6, 2009
  • 2. What is buildout? A system to create complex, repeatable environments via Windows ini style syntax Simplest buildout [buildout] parts= “Pluggable” with recipes, search PyPI (http:// pypi.python.org) for ‘recipe’
  • 3. Why are you doing this? Ability to easily deploy Zenoss via buildout: % svn co http://svn.aclark.net/svn/public/zen/trunk zen % cd zen; python bootstrap.py; bin/buildout Custom deployments featuring Zenoss + Plone. Better understanding of your environment. I like fiddling with buildout.
  • 4. Aha, so you are insane then? No. Well, maybe, but there are other good reasons: Buildout has become the de facto standard in the Plone world for deploying repeatable apps, and I’d like to see its popularity spread. I’d also like to see some of Plone’s generally useful recipes be adopted by other open source projects. But buildout sucks! I.e. It is not as good as RPM, dpkg, etc. IMO, Buildout is NOT an alternative to packaging systems like rpm, dpkg, etc. but rather a complement to them. IOW, my general approach is to use system packages when I can easily use them, and to use buildout in cases where I need more control, repeatability, configuration management, etc.
  • 5. System packages vs. buildouts System Packages Some things (e.g. libjpeg) may be better left to the OS (and whatever package management system it uses) Buildout Some things may be better suited for buildout (particular when it is hard to get packages for the latest code, e.g. rrdtool)
  • 6. OK, Tell me about the buildout then Mostly uses cmmi and command recipes. These recipes download packages, extract them, cd to the package dir then do: ./configure; make; make install. There are currently two competing recipes that perform the same function with subtle differences, they are: zc.recipe.cmmi Allows you to set environment variables, e.g. CFLAGS, PKG_CONFIG, etc Allows you to pass extra options to ./configure with ‘extra_options’ (e.g. extra_options=--with-expat=${expat:location}) hexagonit.recipe.cmmi Allows you to do a post mortem via ‘keep_compile_dir = true’ option Allows you to pass extra options to ./configure with ‘configure-options’ (e.g. --configure_options=--with-expat=${expat:location}) Depending on your needs, one, or the other, or both or either may be required.
  • 7. So, what else does the buildout do? Satisfies Zenoss dependencies: Zope2 Uses plone.recipe.zope2install to download and install the Zope 2 tarball. MySQL Uses zc.recipe.cmmi recipe to build the package. Uses zc.recipe.egg to configure environment variables. rrdtool Uses zc.recipe.cmmi/hexagonit.recipe.cmmi recipes to build the package and it dependencies: cairo/pango, glib/gtk, gettext, fontconfig, etc. Zenoss Zope 2 Products Uses subversion svn:externals property to pull down Zenoss 2.3.x.
  • 8. Enough. Show me the buildout already! Glad you asked, please see the commented buildout at: http://svn.aclark.net/svn/public/buildout/zenoss/ trunk
  • 9. The End! Thank you for reading. Questions/Comments/Concerns/WantToHelp? Please e-mail: aclark@aclark.net For your Plone consulting & hosting needs, please visit my website: http://aclark.net. For the latest on my (Plone and other related) activities, please follow me on Twitter: http:// twitter.com/aclark4life.