Axa Assurance Maroc - Insurer Innovation Award 2024
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.