Remove sub-sections of Reference README index sec
[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 Features that should normally be installed by default, but can be overridden.
136
137 ##### `extra_features`
138
139 List of features to install in addition to the default ones.
140
141 ##### `odl_rest_port `
142
143 Port for ODL northbound REST interface to listen on.
144
145 ##### `install_method `
146
147 How to install OpenDaylight. Current options are "rpm" and "tarball", default is RPM.
148
149 ##### `tarball_url`
150
151 If installing from a tarball, use this one. Defaults to latest ODL.
152
153 ##### `unitfile_url`
154
155 OpenDaylight .service file to use for tarball installs. Defaults to one used by ODL RPM.
156
157 ## Limitations
158
159 * Only tested on Fedora 20, 21, CentOS 7 and Ubuntu 14.04.
160 * CentOS 7 is currently the most stable OS option.
161 * 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.
162
163 ## Development
164
165 See [CONTRIBUTING.md](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.md) for details about how to contribute to this OpenDaylight Puppet module.
166
167 ## Release Notes/Contributors
168
169 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.