Refactor all ODL class param docs in README
[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
3 # OpenDaylight
4
5 #### Table of Contents 
6 1. [Overview](#overview)
7 1. [Module Description](#module-description)
8 1. [Setup](#setup)
9   * [What `opendaylight` affects](#what-opendaylight-affects)
10   * [Beginning with `opendaylight`](#beginning-with-opendaylight)
11 1. [Usage](#usage)
12   * [Karaf Features](#karaf-features)
13   * [Install Method](#install-method)
14   * [Ports](#ports)
15 1. [Reference ](#reference)
16 1. [Limitations](#limitations)
17 1. [Development](#development)
18
19 ## Overview
20
21 Puppet module for deploying the [OpenDaylight Software Defined Networking (SDN) controller](http://www.opendaylight.org/).
22
23 ## Module Description
24
25 Installs and configures the [OpenDaylight SDN controller](http://www.opendaylight.org/).
26
27 Both supported [install methods](#install-method) default to the latest stable OpenDaylight release, which is currently Helium 0.2.3 SR3.
28
29 ## Setup
30
31 ### What `opendaylight` affects
32
33 * Installs [OpenDaylight](http://www.opendaylight.org/).
34 * Installs a [systemd unitfile](https://github.com/dfarrell07/opendaylight-systemd/) for OpenDaylight.
35 * Starts the `opendaylight` systemd service.
36 * Creates `odl:odl` user:group if they don't already exist.
37 * Installs Java, which is required by ODL.
38
39 ### Beginning with `opendaylight`
40
41 Getting started with the OpenDaylight Puppet module is as simple as declaring the `::opendaylight` class.
42
43 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.
44
45 ```
46 [~/vagrant-opendaylight]$ vagrant status
47 Current machine states:
48
49 cent7_pup_rpm             not created (virtualbox)
50 cent7_pup_tb              not created (virtualbox)
51 cent7_rpm                 not created (virtualbox)
52 f20_pup_rpm               not created (virtualbox)
53 f20_pup_tb                not created (virtualbox)
54 f20_rpm                   not created (virtualbox)
55 f21_pup_rpm               not created (virtualbox)
56 f21_pup_tb                not created (virtualbox)
57 f21_rpm                   not created (virtualbox)
58 ```
59
60 ## Usage
61
62 The most basic usage, passing no parameters to the OpenDaylight class, will install and start OpenDaylight with a default configuration.
63
64 ```puppet
65 class { 'opendaylight':
66 }
67 ```
68
69 ### Karaf Features
70
71 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.
72
73 ```puppet
74 class { 'opendaylight':
75   extra_features => ['odl-ovsdb-plugin', 'odl-ovsdb-openstack'],
76 }
77 ```
78
79 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.
80
81 ```puppet
82 class { 'opendaylight':
83   default_features => ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management'],
84 }
85 ```
86
87 ### Install Method
88
89 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.
90
91 It's recommended that most people use the default RPM-based install.
92
93 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.
94
95 ```puppet
96 class { 'opendaylight':
97   install_method => 'tarball',
98   tarball_url    => '<URL to your custom tarball>',
99   unitfile_url   => '<URL to your custom unitfile>',
100 }
101 ```
102
103 ### Ports
104
105 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.
106
107
108 ```puppet
109 class { 'opendaylight':
110   odl_rest_port => '8080',
111 }
112 ```
113
114 ## Reference
115
116 ### Classes
117
118 #### Public classes
119
120 * `::opendaylight`: Main entry point to the module. All ODL knobs should be managed through its params.
121
122 #### Private classes
123
124 * `opendaylight::params`: Contains default `opendaylight` class param values.
125 * `opendaylight::config`: Manages ODL config, including Karaf features and REST port.
126 * `opendaylight::install`: Installs ODL from an RPM or tarball.
127 * `opendaylight::service`: Starts the OpenDaylight service.
128
129 ### `::opendaylight`
130
131 #### Parameters
132
133 ##### `default_features`
134
135 Sets the Karaf features to install by default. These should not normally need to be overridden.
136
137 Default: `['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management']`
138 Valid options: A list of Karaf feature name strings.
139
140 ##### `extra_features`
141
142 Specifies Karaf features to install in addition to the defaults covered by `default_features`.
143
144 Default: `[]`
145 Valid options: A list of Karaf feature name strings.
146
147 ##### `odl_rest_port `
148
149 Sets the port for the ODL northbound REST interface to listen on.
150
151 Default: `'8080'`
152 Valid options: Valid port numbers as strings or integers.
153
154 ##### `install_method `
155
156 Determines the install method to use for OpenDaylight.
157
158 Default: `'rpm'`
159 Valid options: `'tarball'` or `'rpm'`
160
161 ##### `tarball_url`
162
163 Specifies the ODL tarball to use when installing via the tarball install method.
164
165 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'`
166 Valid options: A valid URL to an ODL tarball as a string.
167
168 ##### `unitfile_url`
169
170 Specifies the ODL systemd .service file to use when installing via the tarball install method.
171
172 It's very unlikely that you'll need to override this.
173
174 Default: `'https://github.com/dfarrell07/opendaylight-systemd/archive/master/opendaylight-unitfile.tar.gz'`
175 Valid options: A valid URL to a valid ODL system .service file in a tarball as a string.
176
177 ## Limitations
178
179 * Only tested on Fedora 20, 21, CentOS 7 and Ubuntu 14.04.
180 * CentOS 7 is currently the most stable OS option.
181 * 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.
182
183 ## Development
184
185 See [CONTRIBUTING.markdown](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.markdown) for details about how to contribute to the OpenDaylight Puppet module.
186
187 ## Release Notes/Contributors
188
189 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.