Skip to main content

ZC Buildout recipe for setting up mongoDB.

Project description

Buildout recipe for downloading and installing mongoDB. Visit http://www.mongodb.org for further details on mongoDB.

Credits

Thanks to Andreas Jung for provinding a patch to symlink all mongoDB binaries.

Thanks to Stephan Hofmockel who contributed a patch for creating a start script with custom command line parameters specified as buildout options.

A brief documentation

This recipe takes a number of options:

darwin-32bit-url

The URL to download the 32 bit binary package for the darwin platform.

darwin-64bit-url

The URL to download the 64 bit binary package for the darwin platform.

linux2-32bit-url

The URL to download the 32 bit binary package for the linux platform.

linux2-64bit-url

The URL to download the 64 bit binary package for the linux platform.

(And all options of mongod version v1.6.0 as described below.)

Tests

We will define a buildout template used by the recipe:

>>> buildout_cfg = """
... [buildout]
... parts = mongodb
...
... [mongodb]
... recipe = rod.recipe.mongodb
... darwin-32bit-url = http://downloads.mongodb.org/osx/mongodb-osx-i386-1.6.5.tgz
... darwin-64bit-url = http://downloads.mongodb.org/osx/mongodb-osx-x86_64-1.6.5.tgz
... linux2-32bit-url = http://downloads.mongodb.org/linux/mongodb-linux-i686-1.6.5.tgz
... linux2-64bit-url = http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.6.5.tgz
... """

We’ll start by creating a buildout:

>>> import os.path
>>> write('buildout.cfg', buildout_cfg)

Running the buildout gives us:

>>> output = system(buildout)
>>> 'rod.recipe.mongodb: downloading mongoDB distribution...' in output
True

Check whether the binaries are copied:

>>> set(os.listdir('bin')).issuperset(['mongo', 'mongod', 'mongodump', 'mongoexport', 'mongofiles', 'mongoimport', 'mongorestore', 'mongos', 'mongosniff', 'mongostat'])
True

A start script with the format ‘start_PART-NAME_mongod.sh’ should be generated.

>>> 'start_mongodb_mongod.sh' in os.listdir('bin')
True

It is possible to change the name of this start script with the ‘script_name’ option. Furthermore all options of mongod (version v1.6.0) are supported via buildout options. A more comprehensive recipe could be for example:

>>> buildout_cfg = """
... [buildout]
... parts = mongodb
... [mongodb]
... recipe = rod.recipe.mongodb
... darwin-32bit-url = http://downloads.mongodb.org/osx/mongodb-osx-i386-1.6.5.tgz
... darwin-64bit-url = http://downloads.mongodb.org/osx/mongodb-osx-x86_64-1.6.5.tgz
... linux2-32bit-url = http://downloads.mongodb.org/linux/mongodb-linux-i686-1.6.5.tgz
... linux2-64bit-url = http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.6.5.tgz
... script_name = start_master.sh
... quiet=true
... fork=true
... logpath=${buildout:parts-directory}/mongodb/log
... dbpath=${buildout:parts-directory}/mongodb/data
... directoryperdb=true
... master=true
... update=true
... """
>>> write('buildout.cfg', buildout_cfg)

Re-running the buildout:

>>> output = system(buildout)

Changes

1.2.2 2011-01-21

  • Added buildout option ‘update=true/false’ to force or prevent updating the part.

1.2.1 2010-08-11

  • Added missing command line parameters for Replica Sets (MongoDB 1.6.0).

1.2.0 2010-05-16

  • Creating start script with command line parameters specified as buildout options.

1.1.4 2010-04-18

  • Symlinking rather than copying binaries.

1.1.0 2010-04-15

  • Copying all MongoDB binaries into the ‘bin’ folder of the buildout environment (ajung).

1.0.1 2009-08-21

  • Removing part before updating.

1.0.0 2009-08-14

  • Initial release.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page