SlideShare una empresa de Scribd logo
1 de 9
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.

Más contenido relacionado

La actualidad más candente

System webpack-jspm
System webpack-jspmSystem webpack-jspm
System webpack-jspm
Jesse Warden
 
CoffeeScript in 5mins
CoffeeScript in 5minsCoffeeScript in 5mins
CoffeeScript in 5mins
Masakuni Kato
 

La actualidad más candente (20)

System webpack-jspm
System webpack-jspmSystem webpack-jspm
System webpack-jspm
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / Webgrind
 
Release with confidence
Release with confidenceRelease with confidence
Release with confidence
 
SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient way
 
LCA2014 - Introduction to Go
LCA2014 - Introduction to GoLCA2014 - Introduction to Go
LCA2014 - Introduction to Go
 
Chef training - Day3
Chef training - Day3Chef training - Day3
Chef training - Day3
 
Chef training Day4
Chef training Day4Chef training Day4
Chef training Day4
 
Grails 1.4.0.M1 メモLT
Grails 1.4.0.M1 メモLTGrails 1.4.0.M1 メモLT
Grails 1.4.0.M1 メモLT
 
Xdebug, KCacheGrind and Webgrind with WampServer
Xdebug, KCacheGrind and Webgrind with WampServer  Xdebug, KCacheGrind and Webgrind with WampServer
Xdebug, KCacheGrind and Webgrind with WampServer
 
Tdc 2013 - Ecossistema Ruby
Tdc 2013 - Ecossistema RubyTdc 2013 - Ecossistema Ruby
Tdc 2013 - Ecossistema Ruby
 
CoffeeScript in 5mins
CoffeeScript in 5minsCoffeeScript in 5mins
CoffeeScript in 5mins
 
Using rbenv in Production
Using rbenv in ProductionUsing rbenv in Production
Using rbenv in Production
 
以 Laravel 經驗開發 Hyperf 應用
以 Laravel 經驗開發 Hyperf 應用以 Laravel 經驗開發 Hyperf 應用
以 Laravel 經驗開發 Hyperf 應用
 
Docker perl build
Docker perl buildDocker perl build
Docker perl build
 
Puppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node APIPuppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node API
 
Deploying Rails Apps with Chef and Capistrano
 Deploying Rails Apps with Chef and Capistrano Deploying Rails Apps with Chef and Capistrano
Deploying Rails Apps with Chef and Capistrano
 
CoffeeScript: A beginner's presentation for beginners copy
CoffeeScript: A beginner's presentation for beginners copyCoffeeScript: A beginner's presentation for beginners copy
CoffeeScript: A beginner's presentation for beginners copy
 
The MetaCPAN VM for Dummies Part One (Installation)
The MetaCPAN VM for Dummies Part One (Installation)The MetaCPAN VM for Dummies Part One (Installation)
The MetaCPAN VM for Dummies Part One (Installation)
 
JSLab. Грибанов Александр. "Yeoman - избавляемся от рутинных задач"
JSLab. Грибанов Александр. "Yeoman - избавляемся от рутинных задач"JSLab. Грибанов Александр. "Yeoman - избавляемся от рутинных задач"
JSLab. Грибанов Александр. "Yeoman - избавляемся от рутинных задач"
 

Destacado

Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253
Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253
Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253
Sachin Jaypatre
 
Holographic Projection Technology COMPLETE DETAILS NEW PPT
Holographic Projection Technology COMPLETE DETAILS NEW PPTHolographic Projection Technology COMPLETE DETAILS NEW PPT
Holographic Projection Technology COMPLETE DETAILS NEW PPT
 Abin Baby
 

Destacado (13)

16 Contoh Produk Stiker Hologram
16 Contoh Produk Stiker Hologram16 Contoh Produk Stiker Hologram
16 Contoh Produk Stiker Hologram
 
Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253
Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253
Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253
 
Zenoss presentation (nur nabilah hassan)
Zenoss presentation (nur nabilah hassan)Zenoss presentation (nur nabilah hassan)
Zenoss presentation (nur nabilah hassan)
 
ZenPack Development with Jane Curry
ZenPack Development with Jane CurryZenPack Development with Jane Curry
ZenPack Development with Jane Curry
 
Migrating IT to the Cloud - Zenoss in Amazon Web Services
Migrating IT to the Cloud - Zenoss in Amazon Web ServicesMigrating IT to the Cloud - Zenoss in Amazon Web Services
Migrating IT to the Cloud - Zenoss in Amazon Web Services
 
Intro to Zenoss by Andrew Kirch
Intro to Zenoss by Andrew KirchIntro to Zenoss by Andrew Kirch
Intro to Zenoss by Andrew Kirch
 
Zenoss & ServiceNow Integration - Incident Management & CMDB
Zenoss & ServiceNow Integration - Incident Management & CMDBZenoss & ServiceNow Integration - Incident Management & CMDB
Zenoss & ServiceNow Integration - Incident Management & CMDB
 
Holographic seminar documentation
Holographic seminar documentationHolographic seminar documentation
Holographic seminar documentation
 
3D Holographic Projection Technology
3D Holographic Projection Technology3D Holographic Projection Technology
3D Holographic Projection Technology
 
Zenoss seminar
Zenoss seminarZenoss seminar
Zenoss seminar
 
Holographic Projection Technology COMPLETE DETAILS NEW PPT
Holographic Projection Technology COMPLETE DETAILS NEW PPTHolographic Projection Technology COMPLETE DETAILS NEW PPT
Holographic Projection Technology COMPLETE DETAILS NEW PPT
 
3D HOLOGRAPHIC PROJECTION
3D HOLOGRAPHIC PROJECTION3D HOLOGRAPHIC PROJECTION
3D HOLOGRAPHIC PROJECTION
 
NEW holography TECHNOLOGY ALL PPT
NEW holography TECHNOLOGY ALL PPTNEW holography TECHNOLOGY ALL PPT
NEW holography TECHNOLOGY ALL PPT
 

Similar a Zenoss: Buildout

ZopeSkel & Buildout packages
ZopeSkel & Buildout packagesZopeSkel & Buildout packages
ZopeSkel & Buildout packages
Quintagroup
 
Node.js basics
Node.js basicsNode.js basics
Node.js basics
Ben Lin
 
Recipe to build open splice dds 6.3.xxx Hello World example over Qt 5.2
 Recipe to build open splice dds 6.3.xxx Hello World example over Qt 5.2   Recipe to build open splice dds 6.3.xxx Hello World example over Qt 5.2
Recipe to build open splice dds 6.3.xxx Hello World example over Qt 5.2
Adil Khan
 
Nuxeo5 - Continuous Integration
Nuxeo5 - Continuous IntegrationNuxeo5 - Continuous Integration
Nuxeo5 - Continuous Integration
PASCAL Jean Marie
 

Similar a Zenoss: Buildout (20)

ZopeSkel & Buildout packages
ZopeSkel & Buildout packagesZopeSkel & Buildout packages
ZopeSkel & Buildout packages
 
Oops, where's my site?
Oops, where's my site?Oops, where's my site?
Oops, where's my site?
 
Development Setup of B-Translator
Development Setup of B-TranslatorDevelopment Setup of B-Translator
Development Setup of B-Translator
 
Docker and Kubernetes 101 workshop
Docker and Kubernetes 101 workshopDocker and Kubernetes 101 workshop
Docker and Kubernetes 101 workshop
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and Drush
 
Yobi d2 naver(create)
Yobi d2 naver(create)Yobi d2 naver(create)
Yobi d2 naver(create)
 
Extending Kubectl.pptx
Extending Kubectl.pptxExtending Kubectl.pptx
Extending Kubectl.pptx
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
Native Hadoop with prebuilt spark
Native Hadoop with prebuilt sparkNative Hadoop with prebuilt spark
Native Hadoop with prebuilt spark
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
 
Node.js basics
Node.js basicsNode.js basics
Node.js basics
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
 
How Puppet Enables the Use of Lightweight Virtualized Containers - PuppetConf...
How Puppet Enables the Use of Lightweight Virtualized Containers - PuppetConf...How Puppet Enables the Use of Lightweight Virtualized Containers - PuppetConf...
How Puppet Enables the Use of Lightweight Virtualized Containers - PuppetConf...
 
Recipe to build open splice dds 6.3.xxx Hello World example over Qt 5.2
 Recipe to build open splice dds 6.3.xxx Hello World example over Qt 5.2   Recipe to build open splice dds 6.3.xxx Hello World example over Qt 5.2
Recipe to build open splice dds 6.3.xxx Hello World example over Qt 5.2
 
CodeShip
CodeShipCodeShip
CodeShip
 
Releasing and deploying python tools
Releasing and deploying python toolsReleasing and deploying python tools
Releasing and deploying python tools
 
Advanced front-end automation with npm scripts
Advanced front-end automation with npm scriptsAdvanced front-end automation with npm scripts
Advanced front-end automation with npm scripts
 
Fast Paced Drupal 8: Accelerating Development with Composer, Drupal Console a...
Fast Paced Drupal 8: Accelerating Development with Composer, Drupal Console a...Fast Paced Drupal 8: Accelerating Development with Composer, Drupal Console a...
Fast Paced Drupal 8: Accelerating Development with Composer, Drupal Console a...
 
Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11
 
Nuxeo5 - Continuous Integration
Nuxeo5 - Continuous IntegrationNuxeo5 - Continuous Integration
Nuxeo5 - Continuous Integration
 

Más de Jeffrey Clark

Zpugdc2007 101105081808-phpapp01
Zpugdc2007 101105081808-phpapp01Zpugdc2007 101105081808-phpapp01
Zpugdc2007 101105081808-phpapp01
Jeffrey Clark
 
Zpugdc deformpresentation-100709203803-phpapp01
Zpugdc deformpresentation-100709203803-phpapp01Zpugdc deformpresentation-100709203803-phpapp01
Zpugdc deformpresentation-100709203803-phpapp01
Jeffrey Clark
 
Zpugdccherry 101105081729-phpapp01
Zpugdccherry 101105081729-phpapp01Zpugdccherry 101105081729-phpapp01
Zpugdccherry 101105081729-phpapp01
Jeffrey Clark
 

Más de Jeffrey Clark (20)

Python memory management_v2
Python memory management_v2Python memory management_v2
Python memory management_v2
 
Python meetup
Python meetupPython meetup
Python meetup
 
Jwt with flask slide deck - alan swenson
Jwt with flask   slide deck - alan swensonJwt with flask   slide deck - alan swenson
Jwt with flask slide deck - alan swenson
 
Genericmeetupslides 110607190400-phpapp02
Genericmeetupslides 110607190400-phpapp02Genericmeetupslides 110607190400-phpapp02
Genericmeetupslides 110607190400-phpapp02
 
Pyramiddcpythonfeb2013 131006105131-phpapp02
Pyramiddcpythonfeb2013 131006105131-phpapp02Pyramiddcpythonfeb2013 131006105131-phpapp02
Pyramiddcpythonfeb2013 131006105131-phpapp02
 
Dc python meetup
Dc python meetupDc python meetup
Dc python meetup
 
Zpugdc2007 101105081808-phpapp01
Zpugdc2007 101105081808-phpapp01Zpugdc2007 101105081808-phpapp01
Zpugdc2007 101105081808-phpapp01
 
Zpugdc deformpresentation-100709203803-phpapp01
Zpugdc deformpresentation-100709203803-phpapp01Zpugdc deformpresentation-100709203803-phpapp01
Zpugdc deformpresentation-100709203803-phpapp01
 
Zpugdccherry 101105081729-phpapp01
Zpugdccherry 101105081729-phpapp01Zpugdccherry 101105081729-phpapp01
Zpugdccherry 101105081729-phpapp01
 
Tornado
TornadoTornado
Tornado
 
Science To Bfg
Science To BfgScience To Bfg
Science To Bfg
 
The PSF and You
The PSF and YouThe PSF and You
The PSF and You
 
Using Grok to Walk Like a Duck - Brandon Craig Rhodes
Using Grok to Walk Like a Duck - Brandon Craig RhodesUsing Grok to Walk Like a Duck - Brandon Craig Rhodes
Using Grok to Walk Like a Duck - Brandon Craig Rhodes
 
What Makes A Great Dev Team - Mike Robinson
What Makes A Great Dev Team - Mike RobinsonWhat Makes A Great Dev Team - Mike Robinson
What Makes A Great Dev Team - Mike Robinson
 
What Makes A Great Dev Team - Mike Robinson
What Makes A Great Dev Team - Mike RobinsonWhat Makes A Great Dev Team - Mike Robinson
What Makes A Great Dev Team - Mike Robinson
 
Plone I18n Tutorial - Hanno Schlichting
Plone I18n Tutorial - Hanno SchlichtingPlone I18n Tutorial - Hanno Schlichting
Plone I18n Tutorial - Hanno Schlichting
 
Real World Intranets - Joel Burton
Real World Intranets - Joel BurtonReal World Intranets - Joel Burton
Real World Intranets - Joel Burton
 
State Of Zope 3 - Stephan Richter
State Of Zope 3 - Stephan RichterState Of Zope 3 - Stephan Richter
State Of Zope 3 - Stephan Richter
 
KSS Techniques - Joel Burton
KSS Techniques - Joel BurtonKSS Techniques - Joel Burton
KSS Techniques - Joel Burton
 
Opensourceweblion
OpensourceweblionOpensourceweblion
Opensourceweblion
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 

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.