Major refactoring of README usage section
[integration/packaging/puppet-opendaylight.git] / README.markdown
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)
2 #### Table of Contents 
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)
13
14 ## Overview
15
16 Puppet module for deploying the OpenDaylight Software Defined Networking (SDN) controller.
17
18 ## Module Description
19
20 Stands up the OpenDaylight SDN controller from an RPM, including systemd configuration.
21
22 The currently supported OpenDaylight version is Helium SR2 (0.2.2).
23
24 ## Setup
25
26 ### What opendaylight affects
27
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.
31
32 ### Beginning with opendaylight
33
34 To install and start OpenDaylight, include the `opendaylight` class: `include opendaylight`.
35
36 ## Usage
37
38 The most basic usage, passing no parameters to the OpenDaylight class, will install and start OepnDaylight with a default configuration.
39
40 ```
41 class { 'opendaylight':
42 }
43 ```
44
45 ### Karaf Features
46
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.
48
49 ```
50 class { 'opendaylight':
51   extra_features => ['odl-ovsdb-plugin', 'odl-ovsdb-openstack'],
52 }
53 ```
54
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.
56
57 ```
58 class { 'opendaylight':
59   default_features => ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management'],
60 }
61 ```
62
63 ### Install Method
64
65 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. It's recommended that most folks use the default RPM-based install. 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 the 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.
66
67 ```
68 class { 'opendaylight':
69   install_method => 'tarball',
70   tarball_url => '<URL to your custom tarball>'
71 }
72 ```
73
74 ### Ports
75
76 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.
77
78
79 ```
80 class { 'opendaylight':
81   odl_rest_port => '8080',
82 }
83 ```
84
85 ## Reference
86
87 ### Classes
88
89 #### Public classes
90
91 * `opendaylight`: This is the modules main class. It installs and configures OpenDaylight.
92
93 #### Private classes
94
95 * `opendaylight::params`: Manages default param values.
96 * `opendaylight::config`: Manages the Karaf config file via a template.
97 * `opendaylight::install`: Chooses the correct Yum repo URL based on OS, installs the OpenDaylight Yum repo, installs the OpenDaylight RPM.
98 * `opendaylight::service`: Configures and starts the OpenDaylight service.
99
100 ## Limitations
101
102 * The target OS must use systemd (Fedora 15+, CentOS 7+).
103 * Only tested on Fedora 20, 21 and CentOS 7.
104 * Currently only supports RPM-based installs.
105
106 ## Development
107
108 See [CONTRIBUTING.md](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.md) for details about how to contribute to this OpenDaylight Puppet module.
109
110 ## Release Notes/Contributors
111
112 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.