Puppet module for managing Storm installation.
Features:
- Hiera support
- Mesos integration
- binary package of Storm
- Puppet >= 2.7
The binary package, which is by default called storm will be installed on all machines. You can provide a set of packages:
class {'storm':
packages => ['storm', 'storm-mesos', 'libjzmq']
}Main Storm class includes default configuration, each component is afterwards configured individually.
On master node include Nimbus:
class {'storm::nimbus': }By default service management is disabled, to enable starting service with OS default init system (init.d/upstart/systemd/...) use parameter manage_service:
class {'storm::nimbus':
manage_service => true
}In order to change default service mechanism (determined by Puppet) use parameter force_provider:
class {'storm::nimbus':
manage_service => true,
force_provider => 'runit'
}You can adjust all the parameters directly:
class {'storm::nimbus':
host => '192.168.1.1'
}or via Hiera:
storm::nimbus::host: '192.168.1.1'Parameters:
manage_serviceby defaultfalse(service not managed by OS)enablewhether service should be enable (default:true, notemanage_servicemust be alsotrue)force_providerdefault:undefhostaddress to bind, default:localhostthrift_portdefault:6627childoptsdefault-Xmx1024mtask_timeout_secsdefault30supervisor_timeout_secsdefault60monitor_freq_secsdefault10cleanup_inbox_freq_secsdefault600inbox_jar_expiration_secsdefault3600task_launch_secsdefault120reassigndefaulttruefile_copy_expiration_secsdefault600jvmarray, default:
['-Dlog4j.configuration=file:/etc/storm/storm.log.properties','-Dlogfile.name=nimbus.log']
class {'storm::ui': }Parameters:
manage_serviceby defaultfalse(service not managed by OS)enablewhether service should be enable (default:true, notemanage_servicemust be alsotrue)force_providerdefault:undefmemJVM memory default1024mportdefault:8080childoptsdefault-Xmx768m
Each computing node should include supervisor which watches Storm's bolts and spouts.
class {'storm::supervisor': }class {'storm::drpc': }Mesos integration requires special binary package which provides storm-mesos service (framework).
class {'storm::mesos': }In Hiera you could define something like this:
storm::mesos::master_url: "%{mesos::zookeeper}"Some configuration is shared between components, e.g. packages that are installed:
storm::packages: ['storm', 'libjzmq']by default just storm package is installed.
puppet-librarian:
mod 'deric/storm', :git => 'https://github.com/deric/puppet-storm.git'dependencies:
puppetlabs/stdlibpuppetlabs/concat