1 [![Build Status](https://travis-ci.org/dfarrell07/puppet-opendaylight.svg)](https://travis-ci.org/dfarrell07/puppet-opendaylight) [![Dependency Status](https://gemnasium.com/dfarrell07/puppet-opendaylight.svg)](https://gemnasium.com/dfarrell07/puppet-opendaylight) [![Join the chat at https://gitter.im/dfarrell07/puppet-opendaylight](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dfarrell07/puppet-opendaylight?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
3 1. [Overview](#overview)
4 2. [Module Description - What the module does and why it is useful](#module-description)
5 3. [Setup - The basics of getting started with opendaylight](#setup)
6 * [What opendaylight affects](#what-opendaylight-affects)
7 * [Setup requirements](#setup-requirements)
8 * [Beginning with opendaylight](#beginning-with-opendaylight)
9 4. [Usage - Configuration options and additional functionality](#usage)
10 5. [Reference - An under-the-hood peek at what the module is doing and how](#reference)
11 5. [Limitations - OS compatibility, etc.](#limitations)
12 6. [Development - Guide for contributing to the module](#development)
16 Puppet module for deploying the OpenDaylight Software Defined Networking (SDN) controller.
20 Stands up the OpenDaylight SDN controller from an RPM, including systemd configuration.
22 The currently supported OpenDaylight version is Helium SR2 (0.2.2).
26 ### What opendaylight affects
28 * Installs OpenDaylight archive in /opt/ (may change as RPM matures).
29 * Installs a [systemd unit file](https://github.com/dfarrell07/opendaylight-systemd/) for OpenDaylight.
30 * Creates `odl:odl` user:group if they don't already exist.
32 ### Beginning with opendaylight
34 To install and start OpenDaylight, include the `opendaylight` class: `include opendaylight`.
38 The most basic usage, passing no parameters to the OpenDaylight class, will install and start OepnDaylight with a default configuration.
41 class { 'opendaylight':
47 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.
50 class { 'opendaylight':
51 extra_features => ['odl-ovsdb-plugin', 'odl-ovsdb-openstack'],
55 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.
58 class { 'opendaylight':
59 default_features => ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management'],
65 **Note: The tarball-based install method descrbed here is under active development. Currently, it's not stable and not recommended. See our GitHub Issues for the latest ([#45](https://github.com/dfarrell07/puppet-opendaylight/issues/45), possibly others). As far as we know, RPM-based installs are working fine.**
67 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.
69 It's recommended that most people use the default RPM-based install.
71 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.
74 class { 'opendaylight':
75 install_method => 'tarball',
76 tarball_url => '<URL to your custom tarball>',
77 unitfile_url => '<URL to your custom unitfile>',
83 To change the port OpenDaylight's northbound listens on for REST API calls, use the `odl_rest_port` param. This was added because OpenStack's Swift project uses a conflicting port.
87 class { 'opendaylight':
88 odl_rest_port => '8080',
98 * `opendaylight`: This is the modules main class. It installs and configures OpenDaylight.
102 * `opendaylight::params`: Manages default param values.
103 * `opendaylight::config`: Manages the Karaf config file via a template.
104 * `opendaylight::install`: Chooses the correct Yum repo URL based on OS, installs the OpenDaylight Yum repo, installs the OpenDaylight RPM.
105 * `opendaylight::service`: Configures and starts the OpenDaylight service.
109 * The target OS must use systemd (Fedora 15+, CentOS 7+).
110 * Only tested on Fedora 20, 21 and CentOS 7.
111 * Currently only supports RPM-based installs.
115 See [CONTRIBUTING.md](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.md) for details about how to contribute to this OpenDaylight Puppet module.
117 ## Release Notes/Contributors
119 See the [CHANGELOG](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CHANGELOG) for information about releases and [CONTRIBUTORS](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTORS) file for a list of folks who have contributed.