1 [![Build Status][4]][1]
2 [![Dependency Status][5]][2]
3 [![Join the chat at https://gitter.im/dfarrell07/puppet-opendaylight][6]][3]
8 1. [Overview](#overview)
9 1. [Module Description](#module-description)
11 * [What `opendaylight` affects](#what-opendaylight-affects)
12 * [Beginning with `opendaylight`](#beginning-with-opendaylight)
14 * [Karaf Features](#karaf-features)
15 * [Install Method](#install-method)
17 1. [Reference ](#reference)
18 1. [Limitations](#limitations)
19 1. [Development](#development)
20 1. [Release Notes/Contributors](#release-notescontributors)
24 Puppet module that installs and configures the [OpenDaylight Software Defined Networking (SDN) controller](http://www.opendaylight.org/).
28 Deploys OpenDaylight to various OSs either via an RPM or directly from the ODL tarball release artifact.
30 All OpenDaylight configuration should be handled through the ODL Puppet module's [params](#parameters). If you need a new knob, [please raise an Issue](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.markdown#issues).
32 Both supported [install methods](#install-method) default to the latest stable OpenDaylight release, which is currently Helium 0.2.3 SR3.
36 ### What `opendaylight` affects
38 * Installs Java, which is required by ODL.
39 * Creates `odl:odl` user:group if they don't already exist.
40 * Installs [OpenDaylight](http://www.opendaylight.org/).
41 * Installs a [systemd unitfile](https://github.com/dfarrell07/opendaylight-systemd/) or [Upstart config file](https://github.com/dfarrell07/puppet-opendaylight/blob/master/files/upstart.odl.conf) for OpenDaylight.
42 * Manipulates OpenDaylight's configuration files according to the params passed to the `::opendaylight` class.
43 * Starts the `opendaylight` systemd or Upstart service.
45 ### Beginning with `opendaylight`
47 Getting started with the OpenDaylight Puppet module is as simple as declaring the `::opendaylight` class.
49 The [vagrant-opendaylight](https://github.com/dfarrell07/vagrant-opendaylight/) project provides an easy way to experiment with [applying the ODL Puppet module](https://github.com/dfarrell07/vagrant-opendaylight/tree/master/manifests) to CentOS 7, Fedora 20 and Fedora 21 Vagrant boxes.
52 [~/vagrant-opendaylight]$ vagrant status
53 Current machine states:
55 cent7_pup_rpm not created (virtualbox)
56 cent7_pup_tb not created (virtualbox)
57 cent7_rpm not created (virtualbox)
58 f20_pup_rpm not created (virtualbox)
59 f20_pup_tb not created (virtualbox)
60 f20_rpm not created (virtualbox)
61 f21_pup_rpm not created (virtualbox)
62 f21_pup_tb not created (virtualbox)
63 f21_rpm not created (virtualbox)
64 [~/vagrant-opendaylight]$ vagrant up cent7_pup_rpm
65 # A CentOS 7 VM is created and configured using the ODL Puppet mod's defaults
66 [~/vagrant-opendaylight]$ vagrant ssh cent7_pup_rpm
67 [vagrant@localhost ~]$ sudo systemctl is-active opendaylight
73 The most basic usage, passing no parameters to the OpenDaylight class, will install and start OpenDaylight with a default configuration.
76 class { 'opendaylight':
82 To set extra Karaf features to be installed at OpenDaylight start time, pass them in a list to the `extra_features` param. The extra features you pass will typically be driven by the requirements of your ODL install. You'll almost certainly need to pass some.
85 class { 'opendaylight':
86 extra_features => ['odl-ovsdb-plugin', 'odl-ovsdb-openstack'],
90 OpenDaylight normally installs a default set of Karaf features at boot. They are recommended, so the ODL Puppet mod defaults to installing them. This can be customized by overriding the `default_features` param. You shouldn't normally need to do so.
93 class { 'opendaylight':
94 default_features => ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management'],
100 The `install_method` param, and the associated `tarball_url` and `unitfile_url` params, are intended for use by developers who need to install a custom-built version of OpenDaylight, or for automated build processes that need to consume a tarball build artifact.
102 It's recommended that most people use the default RPM-based install.
104 If you do need to install from a tarball, simply pass `tarball` as the value for `install_method` and optionally pass the URL to your tarball via the `tarball_url` param. The default value for `tarball_url` points at OpenDaylight's latest release. The `unitfile_url` param points at the OpenDaylight systemd .service file used by the RPM and should (very likely) not need to be overridden.
107 class { 'opendaylight':
108 install_method => 'tarball',
109 tarball_url => '<URL to your custom tarball>',
110 unitfile_url => '<URL to your custom unitfile>',
116 To change the port on which OpenDaylight's northbound listens for REST API calls, use the `odl_rest_port` param. This was added because OpenStack's Swift project uses a conflicting port.
120 class { 'opendaylight':
121 odl_rest_port => '8080',
131 * `::opendaylight`: Main entry point to the module. All ODL knobs should be managed through its params.
135 * `::opendaylight::params`: Contains default `opendaylight` class param values.
136 * `::opendaylight::install`: Installs ODL from an RPM or tarball.
137 * `::opendaylight::config`: Manages ODL config, including Karaf features and REST port.
138 * `::opendaylight::service`: Starts the OpenDaylight service.
144 ##### `default_features`
146 Sets the Karaf features to install by default. These should not normally need to be overridden.
148 Default: `['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management']`
150 Valid options: A list of Karaf feature names as strings.
152 ##### `extra_features`
154 Specifies Karaf features to install in addition to the defaults listed in `default_features`.
156 You will likely need to customize this to your use-case.
160 Valid options: A list of Karaf feature names as strings.
162 ##### `install_method `
164 Specifies the install method by which to install OpenDaylight.
166 The RPM install method is less complex, more frequently consumed and recommended.
170 Valid options: The strings `'tarball'` or `'rpm'`.
172 ##### `odl_rest_port `
174 Specifies the port for the ODL northbound REST interface to listen on.
178 Valid options: A valid port number as a string or integer.
182 Specifies the ODL tarball to use when installing via the tarball install method.
184 Default: `'https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.3-Helium-SR3/distribution-karaf-0.2.3-Helium-SR3.tar.gz'`
186 Valid options: A valid URL to an ODL tarball as a string.
190 Specifies the ODL systemd .service file to use when installing via the tarball install method.
192 It's very unlikely that you'll need to override this.
194 Default: `'https://github.com/dfarrell07/opendaylight-systemd/archive/master/opendaylight-unitfile.tar.gz'`
196 Valid options: A valid URL to an ODL systemd .service file (archived in a tarball) as a string.
200 * Tested on Fedora 20, 21, CentOS 7 and Ubuntu 14.04.
201 * CentOS 7 is currently the most stable OS option.
202 * The RPM install method is likely more reliable than the tarball install method.
203 * Our [Fedora 21 Beaker tests are failing](https://github.com/dfarrell07/puppet-opendaylight/issues/63), but it seems to be an issue with the Vagrant image, not the Puppet mod.
207 We welcome contributions and work to make them easy!
209 See [CONTRIBUTING.markdown](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.markdown) for details about how to contribute to the OpenDaylight Puppet module.
211 ## Release Notes/Contributors
213 See the [CHANGELOG](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CHANGELOG) or our [git tags](https://github.com/dfarrell07/puppet-opendaylight/releases) for information about releases. See our [git commit history](https://github.com/dfarrell07/puppet-opendaylight/commits/master) for contributor information.
216 [1]: https://travis-ci.org/dfarrell07/puppet-opendaylight
217 [2]: https://gemnasium.com/dfarrell07/puppet-opendaylight
218 [3]: https://gitter.im/dfarrell07/puppet-opendaylight?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
219 [4]: https://travis-ci.org/dfarrell07/puppet-opendaylight.svg
220 [5]: https://gemnasium.com/dfarrell07/puppet-opendaylight.svg
221 [6]: https://badges.gitter.im/Join%20Chat.svg