Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Zenoss: Buildout


Published on

Deploying Zenoss with Buildout.

Published in: Technology, Self Improvement
  • Be the first to comment

Zenoss: Buildout

  1. 1. Zenoss: Buildout Alex Clark <> 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. 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:// for ‘recipe’
  3. 3. Why are you doing this? Ability to easily deploy Zenoss via buildout: % svn co zen % cd zen; python; bin/buildout Custom deployments featuring Zenoss + Plone. Better understanding of your environment. I like fiddling with buildout.
  4. 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. 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. 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. 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. 8. Enough. Show me the buildout already! Glad you asked, please see the commented buildout at: trunk
  9. 9. The End! Thank you for reading. Questions/Comments/Concerns/WantToHelp? Please e-mail: For your Plone consulting & hosting needs, please visit my website: For the latest on my (Plone and other related) activities, please follow me on Twitter: http://