-[![CI Status][4]][1]
-[![Dependency Status][5]][2]
-
# OpenDaylight
#### Table of Contents
1. [Overview](#overview)
2. [Module Description](#module-description)
3. [Setup](#setup)
- - [What `opendaylight` affects](#what-opendaylight-affects)
- - [Beginning with `opendaylight`](#beginning-with-opendaylight)
+
+- [What `opendaylight` affects](#what-opendaylight-affects)
+- [Beginning with `opendaylight`](#beginning-with-opendaylight)
+
4. [Usage](#usage)
- - [Karaf Features](#karaf-features)
- - [Install Method](#install-method)
- - [RPM Repo](#rpm-repo)
- - [Ports](#ports)
- - [Log Verbosity](#log-verbosity)
- - [Enabling ODL OVSDB HA](#enabling-odl-ovsdb-ha)
+
+- [Karaf Features](#karaf-features)
+- [RPM Repo](#rpm-repo)
+- [Deb Repo](#deb-repo)
+- [Ports](#ports)
+- [Log Verbosity](#log-verbosity)
+- [Enabling ODL HA](#enabling-odl-ha)
+
5. [Reference ](#reference)
6. [Limitations](#limitations)
7. [Development](#development)
## Overview
Puppet module that installs and configures the [OpenDaylight Software Defined
-Networking (SDN) controller][7].
+Networking (SDN) controller][1].
## Module Description
-Deploys OpenDaylight to various OSs either via an RPM or directly from the
-ODL tarball release artifact.
+Deploys OpenDaylight to various OSs either via an RPM or a Deb.
All OpenDaylight configuration should be handled through the ODL Puppet
-module's [params](#parameters). If you need a new knob, [please raise an
-Issue][8].
+module's [params](#parameters).
-The master branch installs OpenDaylight from the latest testing RPM repository
-by default. There are stable/<release> branches that install OpenDaylight
-releases and service releases, like Beryllium or Beryllium SR3.
+By default, the master branch installs OpenDaylight from the latest testing
+RPM repository or from the latest stable Deb repository depending on the OS.
+The stable/<release> branches install corresponding older ODL versions.
## Setup
- Installs Java, which is required by ODL.
- Creates `odl:odl` user:group if they don't already exist.
-- Installs [OpenDaylight][7].
-- Installs a [systemd unitfile][9] or [Upstart config file][10] for
- OpenDaylight.
+- Installs [OpenDaylight][1], including a systemd unit file.
- Manipulates OpenDaylight's configuration files according to the params
passed to the `::opendaylight` class.
-- Starts the `opendaylight` systemd or Upstart service.
+- Starts the `opendaylight` systemd service.
### Beginning with `opendaylight`
Getting started with the OpenDaylight Puppet module is as simple as declaring
the `::opendaylight` class.
-The [vagrant-opendaylight][11] project provides an easy way to experiment
-with [applying the ODL Puppet module][12] to CentOS 7, Fedora 22 and Fedora
-23 Vagrant boxes.
-
-```
-[~/vagrant-opendaylight]$ vagrant status
-Current machine states:
-
-cent7 not created (libvirt)
-cent7_rpm_he_sr4 not created (libvirt)
-cent7_rpm_li_sr2 not created (libvirt)
-cent7_rpm_be not created (libvirt)
-cent7_ansible not created (libvirt)
-cent7_ansible_be not created (libvirt)
-cent7_ansible_path not created (libvirt)
-cent7_pup_rpm not created (libvirt)
-cent7_pup_custom_logs not created (libvirt)
-cent7_pup_tb not created (libvirt)
-f22_rpm_li not created (libvirt)
-f22_ansible not created (libvirt)
-f22_pup_rpm not created (libvirt)
-f23_rpm_li not created (libvirt)
-f23_rpm_li_sr1 not created (libvirt)
-f23_rpm_li_sr2 not created (libvirt)
-f23_rpm_li_sr3 not created (libvirt)
-f23_rpm_be not created (libvirt)
-f23_ansible not created (libvirt)
-f23_pup_rpm not created (libvirt)
-
-[~/vagrant-opendaylight]$ vagrant up cent7_pup_rpm
-# A CentOS 7 VM is created and configured using the ODL Puppet mod's defaults
-[~/vagrant-opendaylight]$ vagrant ssh cent7_pup_rpm
-[vagrant@localhost ~]$ sudo systemctl is-active opendaylight
-active
-```
-
## Usage
The most basic usage, passing no parameters to the OpenDaylight class, will
```puppet
class { 'opendaylight':
- extra_features => ['odl-ovsdb-plugin', 'odl-ovsdb-openstack'],
+ extra_features => ['odl-netvirt-openstack'],
}
```
}
```
-### Install Method
-
-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.
-
-It's recommended that most people 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
-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.
-
-```puppet
-class { 'opendaylight':
- install_method => 'tarball',
- tarball_url => '<URL to your custom tarball>',
- unitfile_url => '<URL to your custom unitfile>',
-}
-```
-
-### RPM Repo
+### RPM Repository
The `rpm_repo` param can be used to configure which RPM repository
OpenDaylight is installed from.
```puppet
class { 'opendaylight':
- rpm_repo => 'opendaylight-40-release',
+ rpm_repo => 'opendaylight-61-release',
}
```
The naming convention follows the naming convention of the CentOS Community
Build System, which is where upstream ODL hosts its RPMs. The
-`opendaylight-40-release` example above would install OpenDaylight Beryllium
-4.0.0 from the [nfv7-opendaylight-40-release][18] repo. Repo names ending in
+`opendaylight-61-release` example above would install OpenDaylight Carbon SR1
+6.1.0 from the [nfv7-opendaylight-61-release][2] repo. Repo names ending in
`-release` will always contain well-tested, officially released versions of
OpenDaylight. Repos ending in `-testing` contain frequent, but unstable and
unofficial, releases. The ODL version given in repo names shows which major
-and minor version it is pinned to. The `opendaylight-40-release` repo will
-always provide OpenDaylight Beryllium 4.0, whereas `opendaylight-4-release`
-will provide the latest release with major version 4 (which could include
-Service Releases, like SR2 4.2).
+and minor version it is pinned to. The `opendaylight-61-release` repo will
+always provide OpenDaylight Carbon SR1 6.1, whereas `opendaylight-4-release`
+will provide the latest release with major version 6 (which could include
+Service Releases, like SR2 6.2).
+
+For additional information about ODL RPM repos, see the [Integration/Packaging
+RPM repositories documentation][3].
-For a full list of OpenDaylight releases and their CBS repos, see the
-[OpenDaylight Deployment wiki][19].
+This is only read for Red Hat-family operating systems.
-This is only read when `install_method` is `rpm`.
+### Deb Repository
+
+The `deb_repo` param can be used to configure which Deb repository
+OpenDaylight is installed from.
+
+```puppet
+class { 'opendaylight':
+ deb_repo => 'ppa:odl-team/carbon',
+}
+```
+
+The naming convention is same as the naming convention of Launchpad PPA's,
+which is where ODL .debs are hosted. The `ppa:odl-team/carbon` example above
+would install OpenDaylight Carbon from the [boron launchpad repo][4].
+
+This is only read for Debian-family operating systems.
### Ports
}
```
-### Enabling ODL OVSDB HA
+### Enabling ODL HA
-To enable ODL OVSDB HA, use the `enable_ha` flag. It's disabled by default.
+To enable ODL HA, use the `enable_ha` flag. It's disabled by default.
When `enable_ha` is set to true the `ha_node_ips` should be populated with the
-IP addresses that ODL will listen on for each node in the OVSDB HA cluster and
-`ha_node_index` should be set with the index of the IP address from
-`ha_node_ips` for the particular node that puppet is configuring as part of the
+IP addresses that ODL will listen on for each node in the HA cluster and
+`odl_bind_ip` should be set with the IP address from `ha_node_ips` configured
+for the particular node that puppet is configuring as part of the
HA cluster.
+By default a single ODL instance will become the leader for the entire
+datastore. In order to distribute the datastore over multiple ODL instances,
+`ha_db_modules` parameter may be specified which will include the modules
+desired to separate out from the default shard, along with the Yang namespace
+for that module.
+
```puppet
class { 'opendaylight':
enable_ha => true,
ha_node_ips => ['10.10.10.1', '10.10.10.1', '10.10.10.3'],
- ha_node_index => 0,
+ odl_bind_ip => 0,
+ ha_db_modules => {'default' => false, 'topology' => 'urn:opendaylight:topology'}
}
```
#### Private classes
- `::opendaylight::params`: Contains default `opendaylight` class param values.
-- `::opendaylight::install`: Installs ODL from an RPM or tarball.
+- `::opendaylight::install`: Installs ODL from an RPM or a Deb.
- `::opendaylight::config`: Manages ODL config, including Karaf features and
REST port.
- `::opendaylight::service`: Starts the OpenDaylight service.
Valid options: A list of Karaf feature names as strings.
-##### `install_method`
-
-Specifies the install method by which to install OpenDaylight.
-
-The RPM install method is less complex, more frequently consumed and
-recommended.
-
-Default: `'rpm'`
-
-Valid options: The strings `'tarball'` or `'rpm'`.
-
##### `odl_rest_port`
Specifies the port for the ODL northbound REST interface to listen on.
Valid options: A valid port number as a string or integer.
+##### `rpm_repo`
+
+OpenDaylight CentOS CBS repo to install RPM from (opendaylight-6-testing,
+opendaylight-6-release, ...).
+
+##### `deb_repo`
+
+OpenDaylight Launchpad PPA repo to install .deb from (ppa:odl-team/boron,
+ppa:odl-team/carbon, ...).
+
##### `log_levels`
Custom OpenDaylight logger verbosity configuration.
The main log output file is `/opt/opendaylight/data/log/karaf.log`.
+##### `log_max_size`
+
+Maximum size of OpenDaylight's log file, `/opt/opendaylight/data/log/karaf.log`.
+
+Once this size is reached, the log will be rolled over, with up to
+`log_max_rollover` log rollovers preserved in total.
+
+Default: `10GB`
+
+Valid options: A valid size as a string with unit specified.
+
+##### `log_max_rollover`
+
+Maximum number of OpenDaylight karaf.log rollovers to keep.
+
+Note that if this is set to 1, log rollovers will result in loosing newly
+logged data. It's recommended to use values greater than one to prune from
+the end of the log.
+
+Default: `2`
+
+Valid options: An integer greater than 0.
+
##### `enable_ha`
-Enable or disable ODL OVSDB High Availablity.
+Enable or disable ODL High Availablity.
Default: `false`
Valid options: The boolean values `true` and `false`.
-Requires: `ha_node_ips`, `ha_node_index`
+Requires: `ha_node_ips`, `odl_bind_ip`
-The ODL OVSDB Clustering XML for HA are configured and enabled.
+The ODL Clustering XML for HA are configured and enabled.
##### `ha_node_ips`
Required by: `enable_ha`
-##### `ha_node_index`
-
-Specifies the index of the IP for the node being configured from the array `ha_node_ips`.
-
-Default: ''
-
-Valid options: Index of a member of the array `ha_node_ips`: `0`.
-
-Required by: `enable_ha`, `ha_node_ips`
+##### `ha_db_modules`
-##### `tarball_url`
+Specifies the modules to use for distributing and sharding the ODL datastore.
-Specifies the ODL tarball to use when installing via the tarball install
-method.
+Default: `{'default'=> false}`
-Default: `'https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.3.2-Lithium-SR2/distribution-karaf-0.3.2-Lithium-SR2.tar.gz'`
+Valid options: A hash of module and Yang namespace for the module (default has no namespace).
-Valid options: A valid URL to an ODL tarball as a string.
+Requires: `enable_ha`
-##### `unitfile_url`
+##### `ha_node_index`
-Specifies the ODL systemd .service file to use when installing via the tarball
-install method.
+Specifies the index of the IP for the node being configured from the array `ha_node_ips`.
-It's very unlikely that you'll need to override this.
+Default: ''
-Default: `'https://github.com/dfarrell07/opendaylight-systemd/archive/master/opendaylight-unitfile.tar.gz'`
+Valid options: Index of a member of the array `ha_node_ips`: `0`.
-Valid options: A valid URL to an ODL systemd .service file (archived in a
-tarball) as a string.
+This parameter is now deprecated and is no longer used.
##### `security_group_mode`
Valid options: `transparent`, `learn`, `stateless`
+##### `snat_mechanism`
+
+Specifies the mechanism to be used for SNAT.
+
+Default: `controller`
+
+Valid options: `conntrack`, `controller`
+
##### `vpp_routing_node`
Specifies the routing node for VPP deployment. A non-empty string will create config file
-org.opendaylight.groupbasedpolicy.neutron.vpp.mapper.cfg with routing-node set.
+org.opendaylight.groupbasedpolicy.neutron.vpp.mapper.startup.cfg with routing-node set.
Default: `''`
Valid options: A string of valid Java options.
-## Limitations
-
-- Tested on Fedora 22, 23, CentOS 7 and Ubuntu 14.04.
-- CentOS 7 is currently the most stable OS option.
-- The RPM install method is likely more reliable than the tarball install
- method.
+##### `username`
-## Development
+Specifies the username to set for admin role in ODL.
-We welcome contributions and work to make them easy!
-
-See [CONTRIBUTING.markdown][14] for details about how to contribute to the
-OpenDaylight Puppet module.
+Default: `'admin'`
-## Release Notes/Contributors
+Valid options: A username string.
-See the [CHANGELOG][15] or our [git tags][16] for information about releases.
-See our [git commit history][17] for contributor information.
+##### `password`
-[1]: https://travis-ci.org/dfarrell07/puppet-opendaylight
+Specifies the password to set for admin role in ODL.
-[2]: https://gemnasium.com/dfarrell07/puppet-opendaylight
+Default: `'admin'`
-[4]: https://travis-ci.org/dfarrell07/puppet-opendaylight.svg
+Valid options: A password string.
-[5]: https://gemnasium.com/dfarrell07/puppet-opendaylight.svg
+## Limitations
-[7]: http://www.opendaylight.org/
+- Tested on CentOS 7 and Ubuntu 16.04.
+- Fedora is allowed but not well-tested, no Beaker coverage.
-[8]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.markdown#issues
+## Development
-[9]: https://github.com/dfarrell07/opendaylight-systemd/
+We welcome contributions and work to make them easy!
-[10]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/files/upstart.odl.conf
+See [CONTRIBUTING.markdown][5] for details about how to contribute to the
+OpenDaylight Puppet module.
-[11]: https://github.com/dfarrell07/vagrant-opendaylight/
+## Release Notes
-[12]: https://github.com/dfarrell07/vagrant-opendaylight/tree/master/manifests
+See the [CHANGELOG][6] for information about releases.
-[13]: https://github.com/dfarrell07/puppet-opendaylight/issues/63
+[1]: http://www.opendaylight.org/ "OpenDaylight homepage"
-[14]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.markdown
+[2]: http://cbs.centos.org/repos/nfv7-opendaylight-61-release/x86_64/os/Packages/ "OpenDaylight Carbon SR1 CentOS CBS repo"
-[15]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/CHANGELOG
+[3]: http://docs.opendaylight.org/en/latest/submodules/integration/packaging/docs/rpms.html#repositories "ODL RPM repo docs"
-[16]: https://github.com/dfarrell07/puppet-opendaylight/releases
+[4]: https://launchpad.net/~odl-team/+archive/ubuntu/carbon "ODL Carbon Deb repo"
-[17]: https://github.com/dfarrell07/puppet-opendaylight/commits/master
+[5]: https://git.opendaylight.org/gerrit/gitweb?p=integration/packaging/puppet-opendaylight.git;a=blob;f=CONTRIBUTING.markdown "Contributing docs"
-[18]: <http://cbs.centos.org/repos/nfv7-opendaylight-40-release/x86_64/os/Packages/> OpenDaylight Beryllium CentOS CBS repo
-[19]: <https://wiki.opendaylight.org/view/Deployment#RPM> OpenDaylight RPMs and their repos
+[6]: https://git.opendaylight.org/gerrit/gitweb?p=integration/packaging/puppet-opendaylight.git;a=blob;f=CHANGELOG "Chagelog"