Add info about tests in CI to contrib docs
[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     * [Beginning with opendaylight](#beginning-with-opendaylight)
8 4. [Usage - Configuration options and additional functionality](#usage)
9 5. [Reference - An under-the-hood peek at what the module is doing and how](#reference)
10 5. [Limitations - OS compatibility, etc.](#limitations)
11 6. [Development - Guide for contributing to the module](#development)
12
13 ## Overview
14
15 Puppet module for deploying the [OpenDaylight Software Defined Networking (SDN) controller](http://www.opendaylight.org/).
16
17 ## Module Description
18
19 Deploys and configures the [OpenDaylight SDN controller](http://www.opendaylight.org/), including systemd configuration.
20
21 Both supported install methods default to the latest stable OpenDaylight release, which is currently Helium 0.2.3 SR3.
22
23 ## Setup
24
25 ### What `opendaylight` affects
26
27 * Installs [OpenDaylight](http://www.opendaylight.org/).
28 * Installs a [systemd unitfile](https://github.com/dfarrell07/opendaylight-systemd/) for OpenDaylight.
29 * Starts the `opendaylight` systemd service.
30 * Creates `odl:odl` user:group if they don't already exist.
31 * Installs Java, which is required by ODL.
32
33 ### Beginning with `opendaylight`
34
35 To install and start OpenDaylight, include the `opendaylight` class: `include opendaylight`.
36
37 ## Usage
38
39 The most basic usage, passing no parameters to the OpenDaylight class, will install and start OepnDaylight with a default configuration.
40
41 ```
42 class { 'opendaylight':
43 }
44 ```
45
46 ### Karaf Features
47
48 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.
49
50 ```
51 class { 'opendaylight':
52   extra_features => ['odl-ovsdb-plugin', 'odl-ovsdb-openstack'],
53 }
54 ```
55
56 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.
57
58 ```
59 class { 'opendaylight':
60   default_features => ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management'],
61 }
62 ```
63
64 ### Install Method
65
66 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.
67
68 It's recommended that most people use the default RPM-based install.
69
70 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.
71
72 ```
73 class { 'opendaylight':
74   install_method => 'tarball',
75   tarball_url => '<URL to your custom tarball>',
76   unitfile_url => '<URL to your custom unitfile>',
77 }
78 ```
79
80 ### Ports
81
82 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.
83
84
85 ```
86 class { 'opendaylight':
87   odl_rest_port => '8080',
88 }
89 ```
90
91 ## Reference
92
93 ### Classes
94
95 #### Public classes
96
97 * `opendaylight`: Main entry point to the module. All ODL knobs should be managed through its params.
98
99 #### Private classes
100
101 * `opendaylight::params`: Contains default `opendaylight` class param values.
102 * `opendaylight::config`: Manages ODL config, including Karaf features and REST port.
103 * `opendaylight::install`: Installs ODL from an RPM or tarball.
104 * `opendaylight::service`: Starts the OpenDaylight service.
105
106 ## Limitations
107
108 * Only tested on Fedora 20, 21, CentOS 7 and Ubuntu 14.04.
109 * CentOS 7 is currently the most stable OS option.
110 * 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.
111
112 ## Development
113
114 See [CONTRIBUTING.md](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.md) for details about how to contribute to this OpenDaylight Puppet module.
115
116 ## Release Notes/Contributors
117
118 See the [CHANGELOG](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CHANGELOG) or our git tags for information about releases. See the git commit history for contributor information.