Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Atlassian JIRA Puppet Module
Ruby HTML Puppet Shell

Merge pull request #74 from f3rr/master

added new parameter disable_notifications in relation to
latest commit 2671bcd94d
@mkrakowitzer mkrakowitzer authored

JIRA Module

Puppet Forge Build Status

Table of Contents

  1. Overview
  2. Module Description - What the module does and why it is useful
  3. Setup - The basics of getting started with JIRA
  4. Usage - Configuration options and additional functionality
  5. Reference - An under-the-hood peek at what the module is doing and how
  6. Limitations - OS compatibility, etc.
  7. Development - Guide for contributing to the module
  8. Testing - How to test the JIRA module
  9. Contributors


This module allows you to install, upgrade and manage Atlassian JIRA.

Module Description

This module installs/upgrades Atlassian's Enterprise Issue Tracking and project management tool. The JIRA module also manages the JIRA configuration files with Puppet.


JIRA Prerequisites

  • JIRA requires a Java Developers Kit (JDK) or Java Run-time Environment (JRE) platform to be installed on your server's operating system. Oracle JDK / JRE (formerly Sun JDK / JRE) versions 7 and 8 are currently supported by Atlassian.

  • JIRA requires a relational database to store its issue data. This module currently supports PostgreSQL 8.4 to 9.x and MySQL 5.x and Oracle 11g and Microsoft SQL Server 2008 & 2012. We suggest using puppetlabs-postgresql/puppetlabs-mysql modules to configure/manage the database. The module uses PostgreSQL as a default.

  • Whilst not required, for production use we recommend using nginx/apache as a reverse proxy to JIRA. We suggest using the jfryman/nginx puppet module.

What JIRA affects

If installing to an existing JIRA instance, it is your responsibility to backup your database. We also recommend that you backup your JIRA home directory and that you align your current JIRA version with the version you intend to use with puppet JIRA module.

You must have your database setup with the account user that JIRA will use. This can be done using the puppetlabs-postgresql and puppetlabs-mysql modules.

When using this module to upgrade JIRA, please make sure you have a database/JIRA home backup.

When using MySQL, We call the jira::mysql_connector class to install the MySQL java connector directory from as per Atlassian's documented recommendations.

Beginning with JIRA

This puppet module will automatically download the JIRA zip from Atlassian and extracts it into /opt/jira/atlassian-jira-$version. The default JIRA home is /home/jira.

If you would prefer to use Hiera then see jira.yaml file for available options.

Basic example
  class { 'jira':
    javahome    => '/opt/java',

A complete example with postgres/nginx/JIRA is available here.

Upgrades to JIRA

Jira can be upgraded by incrementing this version number. This will STOP the running instance of Jira and attempt to upgrade. You should take caution when doing large version upgrades. Always backup your database and your home directory. The jira::facts class is required for upgrades.

  class { 'jira':
    javahome    => '/opt/java',
    version     => '6.3.7',
  class { 'jira::facts': }
Upgrades to the JIRA puppet Module

mkrakowitzer-deploy has been replaced with nanliu-staging as the default module for deploying the JIRA binaries. You can still use mkrakowitzer-deploy with the staging_or_deploy => 'deploy'

  class { 'jira':
    javahome    => '/opt/java',
    staging_or_deploy => 'deploy',



Public Classes

  • jira: Main class, manages the installation and configuration of JIRA
  • jira::facts: Enable external facts for running instance of JIRA. This class is required to handle upgrades of jira. As it is an external fact, we chose not to enable it by default.

Private Classes

  • jira::install: Installs JIRA binaries
  • jira::config: Modifies jira/tomcat configuration files
  • jira::service: Manage the JIRA service.
  • jira::mysql_connector: Install/Manage the MySQL Java connector


JIRA parameters


Specifies the version of JIRA to install, defaults to latest available at time of module upload to the forge. It is recommended to pin the version number to avoid unnecessary upgrades of JIRA.


Product name, defaults to jira


The default file format of the JIRA install file, defaults to tar.gz


The directory to install to, defaults to '/opt/jira'


The default home directory of JIRA, defaults to '/home/jira'


The user to run/install JIRA as, defaults to 'jira'


The group to run/install JIRA as, defaults to 'jira'


The uid of the JIRA user, defaults to next available (undef)


The gid of the JIRA user, defaults to next available (undef)


The shell of the JIRA user, defaults to '/bin/true'

database parameters


Which database to use for JIRA, defaults to 'postgresql'. Can be 'postgresql', 'mysql', 'oracle' or 'sqlserver'.


The default database user for JIRA, defaults to 'jiraadm'


The password for the database user, defaults to 'mypassword'


The hostname of the database server, defaults to 'localhost'


The name of the database, defaults to 'jira'. If using oracle this should be the SID.


The port of the database, defaults to '5432'. MySQL runs on '3306'. Oracle runs on '1521'. SQL Server runs on '1433'.


The database driver to use, defaults to 'org.postgresql.Driver'. Can be 'org.postgresql.Driver', 'com.mysql.jdbc.Driver', 'oracle.jdbc.OracleDriver' or 'net.sourceforge.jtds.jdbc.Driver'.


Database type, defaults to 'postgres72'. Can be 'postgres72', 'mysql', 'oracle10g', or 'mssql'. Atlassian only supports Oracle 11g, even so this value should be as documented here.


The connection pool size to the database, defaults to 20


This parameter is not required nor do we recommend setting it. However it can be used to customize the database connection string.


Configure database settings if you are pooling connections, defaults to 'false'


defaults to 20


defaults to 20


defaults to 30000


defaults to undef


defaults to 60000


defaults to undef


defaults to 20


defaults to true


defaults to 300


defaults to true


defaults to true

MySQL Java Connector parameters


Manage the MySQL Java Connector with the JIRA module, defaults to 'true'


Specifies the version of MySQL Java Connector you would like installed. Defaults to '5.1.34',


Product name, defaults to 'mysql-connector-java'


The default file format of the MySQL Java Connector install file, defaults to tar.gz


Installation directory of the MySQL connector. Defaults to '/opt/MySQL-connector'


The URL used to download the MySQL Java Connector installation file. Defaults to ''

JVM Java parameters


The JAVA_HOME directory, defaults to undef. This is a required parameter


The initial memory allocation pool for a Java Virtual Machine. defaults to '256m'


Maximum memory allocation pool for a Java Virtual Machine. defaults to '1024m'


Increase max permgen size for a Java Virtual Machine. defaults to '256m'


defaults to '-XX:-HeapDumpOnOutOfMemoryError'


defaults to ''

Miscellaneous parameters


The URL used to download the JIRA installation file. Defaults to ''


Choose whether to use nanliu-staging, or mkrakowitzer-deploy. Defaults to 'staging' to use nanliu-staging as it is puppetlabs approved. Alternative option is 'deploy' to use mkrakowitzer-deploy.


Manage the JIRA service, defaults to 'true'


Manage the JIRA service, defaults to 'running'


Defaults to 'true'


Restart the jira service in response to this subscription


Notify other puppet resources to refresh after the jira service


If the jira service is managed outside of puppet the stop_jira parameter can be used to shut down jira for upgrades. Defaults to 'service jira stop && sleep 15'

$proxy = {}

Defaults to {}, See examples on how to use.

$contextpath = ""

Defaults to an empty string (""). Will add a path to the Tomcat Server Context.

Tomcat parameters


IP address to listen on. Defaults to all addresses.


Port to listen on, defaults to 8080,


Defaults to '150'


Defaults to '100'


A more complex example

    class { 'jira':
      version     => '6.0.1',
      installdir  => '/opt/atlassian-jira',
      homedir     => '/opt/atlassian-jira/jira-home',
      user        => 'jira',
      group       => 'jira',
      dbpassword  => 'secret',
      dbserver    => 'localhost',
      javahome    => '/opt/java/jdk1.7.0_21/',
      downloadURL  => 'http://myserver/pub/development-tools/atlassian/',

A Hiera example

This example is used in production for 2000 users in an traditional enterprise environment. Your mileage may vary. The dbpassword can be stored using eyaml hiera extension.

jira::version:       '6.2.7'
jira::installdir:    '/opt/atlassian/atlassian-jira'
jira::homedir:       '/opt/atlassian/application-data/jira-home'
jira::user:          'jira'
jira::group:         'jira'
jira::shell:         '/bin/bash'
jira::dbserver:      ''
jira::javahome:      '/opt/java'
jira::java_opts: >
jira::dbport:        '5439'
jira::dbuser:        'jira'
jira::jvm_xms:       '1G'
jira::jvm_xmx:       '3G'
jira::jvm_permgen:   '384m'
jira::service_manage: false
jira::enable_connection_pooling: 'true'
  - ''
  - ''
  scheme:    'https'
  proxyName: ''
  proxyPort: '443'
jira::contextpath: '/jira'

Reverse proxy can be configured as a hash as part of the JIRA resource

   proxy          => {
     scheme       => 'https',
     proxyName    => '',
     proxyPort    => '443',

Enable external facts for puppet version. These facts are required to be enabled in order to upgrade to new JIRA versions smoothly.

  class { 'jira::facts': }


  • Puppet 3.4+
  • Puppet Enterprise

The puppetlabs repositories can be found at: and

  • RedHat 6/7
  • CentOS 6/7
  • Scientific 6/7
  • Oracle Linux 6/7
  • Ubuntu 12.04/14.04
  • Debian 7

  • PostgreSQL

  • MySQL 5.x
  • Oracle 11G with Oracle 11.2.x drivers
  • Microsoft SQL Server 2005/2008/2012 with JTDS driver (included in non-WAR version)

We plan to support other Linux distributions and possibly Windows in the near future.


Please feel free to raise any issues here for bug fixes. We also welcome feature requests. Feel free to make a pull request for anything and we make the effort to review and merge. We prefer with tests if possible.

Testing - How to test the JIRA module

Using puppetlabs_spec_helper. Simply run:

bundle install && bundle exec rake spec

to get results.

ruby-1.9.3-p484/bin/ruby -S rspec spec/classes/jira_install_spec.rb --color

Finished in 0.38159 seconds
1 example, 0 failures

Using Beaker - Puppet Labs cloud enabled acceptance testing tool..

The beaker tests will install oracle Java to /opt/java. When running the beaker tests you agree that you accept the oracle java license.

bundle install
BEAKER_set=ubuntu-server-12042-x64 bundle exec rake beaker
BEAKER_set=ubuntu-server-1404-x64 bundle exec rake beaker
BEAKER_set=debian-73-x64 bundle exec rake beaker
BEAKER_set=centos-64-x64 bundle exec rake beaker
BEAKER_set=centos-70-x64 bundle exec rake beaker
BEAKER_set=centos-64-x64-pe bundle exec rake beaker

To save build time it is useful to host the installation files locally on a web server. You can use the download_url environment variable to overwrite the default.

export download_url="'http://my.local.server/'"


The list of contributors can be found here

Something went wrong with that request. Please try again.