Manages the installation of Atlassian Bamboo

Josh Beard



7,948 latest version

5.0 quality score

Version information

  • 3.6.0 (latest)
  • 3.5.1
  • 3.5.0
  • 3.4.1
  • 3.4.0
  • 3.3.0
  • 3.2.2
  • 3.2.1
  • 3.2.0
  • 3.1.2
  • 3.1.1
  • 3.1.0
  • 3.0.0
released Apr 23rd 2019
This version is compatible with:
  • Puppet Enterprise 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x, 2017.3.x, 2017.2.x, 2017.1.x, 2016.5.x, 2016.4.x
  • Puppet >= 4.7.0 < 7.0.0
  • RedHat
This module has been deprecated by its author since Dec 2nd 2020.

The reason given was: No longer maintained

The author has suggested pest-bamboo as its replacement.

Start using this module


joshbeard/bamboo — version 3.6.0 Apr 23rd 2019


Puppet Forge Build Status

  1. Overview
  2. Prerequisites
  3. Usage
  4. Reference
  5. Limitations
  6. Development and Contributing
  7. Authors and Contributors


This is a Puppet module to manage the installation and initial configuration of Atlassian Bamboo, a continuous integration and build server.

  • Manages the download and installation of Bamboo
  • Manages some configuration settings, such as Tomcat ports, proxy configuration, Java options, and JVM tuning.
  • Manages a user, group, and home
  • Manages a service for Bamboo

There's still some post-installation steps that will need to be completed manually, such as entering a license and configuring the database.

This is a fork of maestrodev/bamboo, which appears to be dormant. It includes improvements from other authors as well, notably, Simon Croomes.

This module tries to follow conventions in the Confluence, Jira, and BitBucket modules


Consult the Atlassian Bamboo documentation for specific system requirements for your platform and version. This module does not manage a Java installation.

NOTE: Since Bamboo 5.10, Atlassian no longer supports JDK < 8



To have Puppet install Bamboo with the default parameters, declare the bamboo class:

class { 'bamboo': }

The bamboo class serves as a single "point of entry" for the module.



class { 'bamboo':
  version      => '6.7.1',
  installdir   => '/opt/bamboo',
  homedir      => '/var/local/bamboo',
  user         => 'bamboo',
  java_home    => '/over/the/rainbow/java',
  download_url => '',
  context_path => 'bamboo',
  umask        => '0022',
  proxy        => {
    scheme    => 'https',
    proxyName => '',
    proxyPort => '443',
Using Hiera
contain bamboo
bamboo::version: '6.7.1'
bamboo::checksum: '774ec0917cccc5b90b7be3df4d661620'
bamboo::installdir: '/opt/bamboo'
bamboo::jvm_xms: '512m'
bamboo::jvm_xmx: '1024m'
  scheme: 'https'
  proxyName: ''
  proxyPort: '443'
bamboo::umask: '0022'
bamboo::download_url: ''
bamboo::java_home: '/etc/alternatives/java_sdk'

Context Path

Specifying a context_path for instances where Bamboo is being served from a path (e.g.

class { 'bamboo':
  context_path => 'bamboo',

This configures the embedded Bamboo Tomcat instance with the context path.

Reverse Proxy

For instances where Bamboo is behind a reverse proxy

class { 'bamboo':
  proxy => {
    scheme    => 'https',
    proxyName => '',
    proxyPort => '443',

This configures the embedded Bamboo Tomcat instance's connector.

The proxy parameter accepts a hash of Tomcat options for configuring the connector's proxy settings. Refer to Tomcat's documentation for more information.

Installation locations

class { 'bamboo':
  installdir => '/opt/bamboo',
  homedir    => '/opt/local/bamboo',

JVM Tuning

class { 'bamboo':
  java_home    => '/usr/lib/java/custom',
  jvm_xms      => '512m',
  jvm_xmx      => '2048m',
  jvm_permgen  => '512m',
  jvm_opts     => '-Dcustomopt',

Tomcat Tuning

Bamboo's powered by an embedded Tomcat instance, which can be tweaked.

class { 'bamboo':
  tomcat_port        => '9090',
  max_threads        => '256',
  min_spare_threads  => '50',
  connection_timeout => '30000',
  accept_count       => '200',


Class: bamboo



Default: '6.7.1'

The version of Bamboo to download and install. Should be in a MAJOR.MINOR.PATH format.

Refer to


Default: 'tar.gz'

The file extension of the remote archive. This is typically .tar.gz. Accepts .tar.gz or .zip


Default: '/usr/local/bamboo'

The base directory for extracting/installing Bamboo to. Note that it will decompress inside this directory to a directory such as atlassian-bamboo-6.7.1/ So an installdir of /usr/local/bamboo will ultimately install Bamboo to /usr/local/bamboo/atlassian-bamboo-6.7.1/ by default.

Refer to manage_installdir and appdir


Default: true

Boolean. Whether this module should be responsible for managing the installdir


Default: ${installdir}/atlassian-bamboo-${version}

This is the directory that Bamboo gets extracted to within the 'installdir'

By default, this is a subdirectory with the specific version appended to it.

You might want to customize this if you don't want to use the default atlassian-bamboo-${version} convention.


Default: true

Boolean. Whether this module should be responsible for managing the appdir


Default: '/var/local/bamboo'

The home directory for the Bamboo user. This path will be managed by this module, even if manage_user is false.


Default: '' (empty)

For instances where Bamboo is being served from a sub path, such as, where the context_path would be bamboo


Default: '8085'

The HTTP port for serving Bamboo.


Default: '150'

Maps to Tomcat's maxThreads HTTP attribute.

Refer to for more information.


Default: '25'

Maps to Tomcat's minSpareThreads HTTP attribute.

Refer to for more information.


Default: '20000'

Maps to Tomcat's connectionTimeout HTTP attribute.

Refer to for more information.


Default: '100'

Maps to Tomcat's acceptCount HTTP attribute.

Refer to for more information.


Default: {}

Bamboo's proxy configuration for instances where Bamboo's being served with a reverse proxy in front of it (e.g. Apache or Nginx).


Default: true

Specifies whether the module should manage the user or not.


Default: true

Specifies whether the module should manage the group or not.


Default: 'bamboo'

Bamboo's installation will be owned by this user and the service will run as this user.


Default: 'bamboo'

Bamboo's installation will be owned by this group.


Default: undef

Optionally specify a UID for the user.


Default: undef

Optionally specify a GID for the group.


Default: '*'

Specify a password for the user.


Default: '/bin/bash'

Specify a shell for the user.


Default: '/usr/lib/jvm/java'

Absolute path to the Java installation.


Default: '256m'

Amount of memory the JVM will be started with.


Default: '1024m'

Maximum amount of memory the JVM has available.

You may need to increase this if you see java.lang.OutOfMemoryError


Default: '256m'

Size of the permanent generation heap. Unlikely that you need to tune this.


Default: ''

Any custom options to start the JVM with.


Default: ''

From Bamboo's default

Occasionally Atlassian Support may recommend that you set some specific JVM
arguments.  You can use this variable below to do that.

Default: ''

The base url to download Bamboo from. This should be the URL up to the actual filename. The default downloads from Atlassian's site.


Default: undef

Specify a proxy server to use on the archive resource for downloading Bamboo, with port number if needed. (e.g.


Default: undef

Proxy server type (none|http|https|ftp) to use on the archive resource for downloading Bamboo.


Default: true

Whether this module should manage the service.


Default: 'running'

The state of the service, if managed.


Default: true

Whether the service should start on boot.


Default: /etc/init.d/bamboo for everything except EL7

Path to the init script. Typically, this is /etc/init.d/bamboo. On EL7, systemd is used and this parameter is set to /usr/lib/systemd/system/bamboo.service


Default: $bamboo::params::service_template

Template for the init script/service definition. The module includes an init script and systemd service configuration, but you can use your own if you'd like. This should refer to a Puppet module template. E.g. modulename/bamboo.init.erb


Default: '20'

Seconds to wait for the Bamboo process to stop. (e.g. service bamboo stop will wait this interval before attempting to kill the process and returning).


Default: 'present'

Valid values are 'present' or 'absent'

Will provide an external fact called bamboo_version with the installed Bamboo version.


Default: See bamboo::params

Absolute path to the external facts directory. Refer to


Default: true


Whether this module should ensure the "facts.d" directory for external facts is created. This module uses an Exec resource to do that recursively if this is true.


Default: service bamboo stop && sleep 15

The command to execute prior to upgrading. This should stop any running Bamboo instance. This is executed after downloading the specified version and before extracting it to install it.

This requires the bamboo_version fact.


Default: false

Specifies whether the initconfig file should be managed by this module.


Default: $::osfamily specific - see bamboo::params

Absolute path to the init config file (sysconfig, defaults). This file is sourced by the init script if it exists. Defaults to /etc/sysconfig/bamboo on Red Hat family systems. Defaults to /etc/default/bamboo on Debian family systems.


Default: '' (empty)

If initconfig_manage => true, this string should be the content to populate the init config file with.


Default: undef (will use Bamboo's default)

Specifies a UMASK to run Bamboo with.

Other Classes

The following classes are called from the base class. You shouldn't need to declare these directly.


Tested Platforms

  • EL 6
  • EL 7
  • Debian 8
  • Debian 9
  • Ubuntu 14.04
  • Ubuntu 16.04
  • Ubuntu 18.04
  • Puppet 4.x
  • Puppet 5.x
  • Puppet 6.x

Bamboo Configuration

This module does not manage the initial setup of Bamboo - the steps that are done via the web interface once installed and running. This doesn't appear to be easily managed automatically. This includes database configuration and the license. Ultimately, this configuration is placed in ${homedir}/bamboo-cfg.xml. Contributions are welcome to help manage this.

Development and Contributing

Please feel free to raise any issues here for bug fixes and feature requests.

Pull requests with passing tests and updated tests are appreciated.

Travis CI is used for testing.

How to test the Bamboo module

Install the dependencies:

bundle install

Syntax validation, lint, and spec tests:

bundle exec rake test

Unit tests:

bundle exec rake spec

Syntax validation:

bundle exec rake validate

Puppet Lint:

bundle exec rake lint

Acceptance tests:

bundle exec rake beaker

You can set the BAMBOO_DOWNLOAD_URL and BAMBOO_VERSION environment variables for setting the corresponding ::bamboo class parameters for the beaker-rspec tests.

Authors and Contributors