2 [![Dependency Status][5]][2]
8 1. [Overview](#overview)
9 2. [Module Description](#module-description)
12 - [What `opendaylight` affects](#what-opendaylight-affects)
13 - [Beginning with `opendaylight`](#beginning-with-opendaylight)
17 - [Karaf Features](#karaf-features)
18 - [RPM Repo](#rpm-repo)
19 - [Deb Repo](#deb-repo)
21 - [Log Verbosity](#log-verbosity)
22 - [Enabling ODL HA](#enabling-odl-ha)
24 5. [Reference ](#reference)
25 6. [Limitations](#limitations)
26 7. [Development](#development)
27 8. [Release Notes/Contributors](#release-notescontributors)
31 Puppet module that installs and configures the [OpenDaylight Software Defined
32 Networking (SDN) controller][7].
36 Deploys OpenDaylight to various OSs either via an RPM or a Deb.
38 All OpenDaylight configuration should be handled through the ODL Puppet
39 module's [params](#parameters). If you need a new knob, [please raise an
42 By default, the master branch installs OpenDaylight from the latest testing RPM repository
43 or from the latest stable Deb repository depending on the OS. There are stable/<release>
44 branches that install OpenDaylight releases and service releases, like Beryllium or Beryllium SR3.
48 ### What `opendaylight` affects
50 - Installs Java, which is required by ODL.
51 - Creates `odl:odl` user:group if they don't already exist.
52 - Installs [OpenDaylight][7].
53 - Installs a [systemd unitfile][9] for OpenDaylight.
54 - Manipulates OpenDaylight's configuration files according to the params
55 passed to the `::opendaylight` class.
56 - Starts the `opendaylight` systemd service.
58 ### Beginning with `opendaylight`
60 Getting started with the OpenDaylight Puppet module is as simple as declaring
61 the `::opendaylight` class.
63 The [vagrant-opendaylight][11] project provides an easy way to experiment with
64 [applying the ODL Puppet module][12] to VMs.
67 # Provision a CentOS VM using puppet-opendaylight
68 $ vagrant up cent7_pup_rpm
69 $ vagrant ssh cent7_pup_rpm
70 $ sudo systemctl is-active opendaylight
76 The most basic usage, passing no parameters to the OpenDaylight class, will
77 install and start OpenDaylight with a default configuration.
80 class { 'opendaylight':
86 To set extra Karaf features to be installed at OpenDaylight start time, pass
87 them in a list to the `extra_features` param. The extra features you pass will
88 typically be driven by the requirements of your ODL install. You'll almost
89 certainly need to pass some.
92 class { 'opendaylight':
93 extra_features => ['odl-netvirt-openstack'],
97 OpenDaylight normally installs a default set of Karaf features at boot. They
98 are recommended, so the ODL Puppet mod defaults to installing them. This can
99 be customized by overriding the `default_features` param. You shouldn't
100 normally need to do so.
103 class { 'opendaylight':
104 default_features => ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management'],
110 The `rpm_repo` param can be used to configure which RPM repository
111 OpenDaylight is installed from.
114 class { 'opendaylight':
115 rpm_repo => 'opendaylight-40-release',
119 The naming convention follows the naming convention of the CentOS Community
120 Build System, which is where upstream ODL hosts its RPMs. The
121 `opendaylight-40-release` example above would install OpenDaylight Beryllium
122 4.0.0 from the [nfv7-opendaylight-40-release][18] repo. Repo names ending in
123 `-release` will always contain well-tested, officially released versions of
124 OpenDaylight. Repos ending in `-testing` contain frequent, but unstable and
125 unofficial, releases. The ODL version given in repo names shows which major
126 and minor version it is pinned to. The `opendaylight-40-release` repo will
127 always provide OpenDaylight Beryllium 4.0, whereas `opendaylight-4-release`
128 will provide the latest release with major version 4 (which could include
129 Service Releases, like SR2 4.2).
131 For a full list of OpenDaylight releases and their CBS repos, see the
132 [OpenDaylight Deployment wiki][19].
134 This is only read for RedHat based operating systems. For Debian based OSs,
135 this values is `none`.
139 The `deb_repo` param can be used to configure which Deb repository
140 OpenDaylight is installed from.
143 class { 'opendaylight':
144 deb_repo => 'ppa:odl-team/boron',
148 The naming convention is same as the naming convention of Launchpad PPA's,
149 which is where ODL .debs are hosted. The `ppa:odl-team/boron` example above
150 would install OpenDaylight Boron realease from the [odl-team's boron][20] repo.
152 This is only read for Debian based operating systems. For RedHat based OSs,
153 this values is `none`.
157 To change the port on which OpenDaylight's northbound listens for REST API
158 calls, use the `odl_rest_port` param.
161 class { 'opendaylight':
162 odl_rest_port => '8080',
168 It's possible to define custom logger verbosity levels via the `log_levels`
172 class { 'opendaylight':
173 log_levels => { 'org.opendaylight.ovsdb' => 'TRACE', 'org.opendaylight.ovsdb.lib' => 'INFO' },
179 To enable ODL HA, use the `enable_ha` flag. It's disabled by default.
181 When `enable_ha` is set to true the `ha_node_ips` should be populated with the
182 IP addresses that ODL will listen on for each node in the HA cluster and
183 `ha_node_index` should be set with the index of the IP address from
184 `ha_node_ips` for the particular node that puppet is configuring as part of the
188 class { 'opendaylight':
190 ha_node_ips => ['10.10.10.1', '10.10.10.1', '10.10.10.3'],
201 - `::opendaylight`: Main entry point to the module. All ODL knobs should be
202 managed through its params.
206 - `::opendaylight::params`: Contains default `opendaylight` class param values.
207 - `::opendaylight::install`: Installs ODL from an RPM or a Deb.
208 - `::opendaylight::config`: Manages ODL config, including Karaf features and
210 - `::opendaylight::service`: Starts the OpenDaylight service.
216 ##### `default_features`
218 Sets the Karaf features to install by default. These should not normally need
221 Default: `['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management']`
223 Valid options: A list of Karaf feature names as strings.
225 ##### `extra_features`
227 Specifies Karaf features to install in addition to the defaults listed in
230 You will likely need to customize this to your use-case.
234 Valid options: A list of Karaf feature names as strings.
236 ##### `odl_rest_port`
238 Specifies the port for the ODL northbound REST interface to listen on.
242 Valid options: A valid port number as a string or integer.
246 OpenDaylight CentOS CBS repo to install RPM from (opendaylight-4-testing,
247 opendaylight-40-release, ...).
251 OpenDaylight Launchpad PPA repo to install .deb from (ppa:odl-team/boron,
252 ppa:odl-team/carbon, ...).
256 Custom OpenDaylight logger verbosity configuration.
260 Valid options: A hash of loggers to log levels.
263 { 'org.opendaylight.ovsdb' => 'TRACE', 'org.opendaylight.ovsdb.lib' => 'INFO' }
266 Valid log levels are TRACE, DEBUG, INFO, WARN, and ERROR.
268 The above example would add the following logging configuration to
269 `/opt/opendaylight/etc/org.ops4j.pax.logging.cfg`.
272 # Log level config added by puppet-opendaylight
273 log4j.logger.org.opendaylight.ovsdb = TRACE
275 # Log level config added by puppet-opendaylight
276 log4j.logger.org.opendaylight.ovsdb.lib = INFO
279 To view loggers and their verbosity levels, use `log:list` at the ODL Karaf shell.
282 opendaylight-user@root>log:list
284 ----------------------------------
286 org.opendaylight.ovsdb | TRACE
287 org.opendaylight.ovsdb.lib | INFO
290 The main log output file is `/opt/opendaylight/data/log/karaf.log`.
294 Enable or disable ODL High Availablity.
298 Valid options: The boolean values `true` and `false`.
300 Requires: `ha_node_ips`, `ha_node_index`
302 The ODL Clustering XML for HA are configured and enabled.
306 Specifies the IPs that are part of the HA cluster enabled by `enable_ha`.
310 Valid options: An array of IP addresses `['10.10.10.1', '10.10.10.1', '10.10.10.3']`.
312 Required by: `enable_ha`
314 ##### `ha_node_index`
316 Specifies the index of the IP for the node being configured from the array `ha_node_ips`.
320 Valid options: Index of a member of the array `ha_node_ips`: `0`.
322 Required by: `enable_ha`, `ha_node_ips`
324 ##### `security_group_mode`
326 Specifies the mode to use for security groups.
330 Valid options: `transparent`, `learn`, `stateless`
332 ##### `vpp_routing_node`
334 Specifies the routing node for VPP deployment. A non-empty string will create config file
335 org.opendaylight.groupbasedpolicy.neutron.vpp.mapper.startup.cfg with routing-node set.
339 Valid options: A valid host name to a VPP node handling routing.
343 Specifies the Java options to run ODL with as a string.
345 Default: `'-Djava.net.preferIPv4Stack=true'`
347 Valid options: A string of valid Java options.
351 Specifies the username to set for admin role in ODL.
355 Valid options: A username string.
359 Specifies the password to set for admin role in ODL.
363 Valid options: A password string.
367 - Tested on CentOS 7 and Ubuntu 16.04.
368 - Fedora is allowed but not well-tested, no Beaker coverage.
372 We welcome contributions and work to make them easy!
374 See [CONTRIBUTING.markdown][14] for details about how to contribute to the
375 OpenDaylight Puppet module.
377 ## Release Notes/Contributors
379 See the [CHANGELOG][15] or our [git tags][16] for information about releases.
380 See our [git commit history][17] for contributor information.
382 [1]: https://travis-ci.org/dfarrell07/puppet-opendaylight
384 [2]: https://gemnasium.com/dfarrell07/puppet-opendaylight
386 [4]: https://travis-ci.org/dfarrell07/puppet-opendaylight.svg?branch=master
388 [5]: https://gemnasium.com/dfarrell07/puppet-opendaylight.svg?branch=master
390 [7]: http://www.opendaylight.org/
392 [8]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.markdown#issues
394 [9]: https://github.com/dfarrell07/opendaylight-systemd/
396 [11]: https://github.com/dfarrell07/vagrant-opendaylight/
398 [12]: https://github.com/dfarrell07/vagrant-opendaylight/tree/master/manifests
400 [13]: https://github.com/dfarrell07/puppet-opendaylight/issues/63
402 [14]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.markdown
404 [15]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/CHANGELOG
406 [16]: https://github.com/dfarrell07/puppet-opendaylight/releases
408 [17]: https://github.com/dfarrell07/puppet-opendaylight/commits/master
410 [18]: http://cbs.centos.org/repos/nfv7-opendaylight-40-release/x86_64/os/Packages/ "OpenDaylight Beryllium CentOS CBS repo"
412 [18]: https://wiki.opendaylight.org/view/Deployment#RPM "OpenDaylight RPMs and their repos"
414 [20]: https://launchpad.net/~odl-team/+archive/ubuntu/boron