Add WriteGoodLintBear support
[integration/packaging/puppet-opendaylight.git] / README.markdown
index 32e1b65d6f38d43052cb6309ee4918fbe15a50f4..91de61e244282fbf00efa2fe33a220b986c0a2d0 100644 (file)
@@ -1,26 +1,27 @@
-[![CI Status][4]][1]
-[![Dependency Status][5]][2]
-
 # OpenDaylight
 
-#### Table of Contents 
+#### Table of Contents
+
 1. [Overview](#overview)
-1. [Module Description](#module-description)
-1. [Setup](#setup)
-  * [What `opendaylight` affects](#what-opendaylight-affects)
-  * [Beginning with `opendaylight`](#beginning-with-opendaylight)
-1. [Usage](#usage)
-  * [Karaf Features](#karaf-features)
-  * [Install Method](#install-method)
-  * [RPM Repo](#rpm-repo)
-  * [Ports](#ports)
-  * [Log Verbosity](#log-verbosity)
-  * [Enabling ODL OVSDB L3](#enabling-odl-ovsdb-l3)
-  * [Enabling ODL OVSDB HA](#enabling-odl-ovsdb-ha)
-1. [Reference ](#reference)
-1. [Limitations](#limitations)
-1. [Development](#development)
-1. [Release Notes/Contributors](#release-notescontributors)
+2. [Module Description](#module-description)
+3. [Setup](#setup)
+
+- [What `opendaylight` affects](#what-opendaylight-affects)
+- [Beginning with `opendaylight`](#beginning-with-opendaylight)
+
+4. [Usage](#usage)
+
+- [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)
+8. [Release Notes/Contributors](#release-notescontributors)
 
 ## Overview
 
@@ -29,68 +30,41 @@ Networking (SDN) controller][7].
 
 ## 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].
 
-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. There are stable/<release>
+branches that install OpenDaylight releases and service releases, like Beryllium or Beryllium SR3.
 
 ## Setup
 
 ### What `opendaylight` affects
 
-* 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.
-* Manipulates OpenDaylight's configuration files according to the params
-passed to the `::opendaylight` class.
-* Starts the `opendaylight` systemd or Upstart service.
+- 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] for OpenDaylight.
+- Manipulates OpenDaylight's configuration files according to the params
+  passed to the `::opendaylight` class.
+- 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.
+The [vagrant-opendaylight][11] project provides an easy way to experiment with
+[applying the ODL Puppet module][12] to VMs.
 
 ```
-[~/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
+# Provision a CentOS VM using puppet-opendaylight
+$ vagrant up cent7_pup_rpm
+$ vagrant ssh cent7_pup_rpm
+$ sudo systemctl is-active opendaylight
 active
 ```
 
@@ -113,7 +87,7 @@ certainly need to pass some.
 
 ```puppet
 class { 'opendaylight':
-  extra_features => ['odl-ovsdb-plugin', 'odl-ovsdb-openstack'],
+  extra_features => ['odl-netvirt-openstack'],
 }
 ```
 
@@ -128,30 +102,6 @@ class { 'opendaylight':
 }
 ```
 
-### 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
 
 The `rpm_repo` param can be used to configure which RPM repository
@@ -178,14 +128,32 @@ Service Releases, like SR2 4.2).
 For a full list of OpenDaylight releases and their CBS repos, see the
 [OpenDaylight Deployment wiki][19].
 
-This is only read when `install_method` is `rpm`.
+This is only read for RedHat based operating systems. For Debian based OSs,
+this values is `none`.
+
+### Deb Repo
+
+The `deb_repo` param can be used to configure which Deb repository
+OpenDaylight is installed from.
+
+```puppet
+class { 'opendaylight':
+  deb_repo => 'ppa:odl-team/boron',
+}
+```
+
+The naming convention is same as the naming convention of Launchpad PPA's,
+which is where ODL .debs are hosted. The `ppa:odl-team/boron` example above
+would install OpenDaylight Boron realease from the [odl-team's boron][20] repo.
+
+This is only read for Debian based operating systems. For RedHat based OSs,
+this values is `none`.
 
 ### Ports
 
 To change the port on which OpenDaylight's northbound listens for REST API
 calls, use the `odl_rest_port` param.
 
-
 ```puppet
 class { 'opendaylight':
   odl_rest_port => '8080',
@@ -203,31 +171,28 @@ class { 'opendaylight':
 }
 ```
 
-### Enabling ODL OVSDB L3
-
-To enable the ODL OVSDB L3, use the `enable_l3` flag. It's disabled by default.
-
-```puppet
-class { 'opendaylight':
-  enable_l3 => true,
-}
-```
-
-### 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'}
 }
 ```
 
@@ -237,16 +202,16 @@ class { 'opendaylight':
 
 #### Public classes
 
-* `::opendaylight`: Main entry point to the module. All ODL knobs should be
-managed through its params.
+- `::opendaylight`: Main entry point to the module. All ODL knobs should be
+  managed through its params.
 
 #### Private classes
 
-* `::opendaylight::params`: Contains default `opendaylight` class param values.
-* `::opendaylight::install`: Installs ODL from an RPM or tarball.
-* `::opendaylight::config`: Manages ODL config, including Karaf features and
-REST port.
-* `::opendaylight::service`: Starts the OpenDaylight service.
+- `::opendaylight::params`: Contains default `opendaylight` class param values.
+- `::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.
 
 ### `::opendaylight`
 
@@ -272,24 +237,23 @@ Default: `[]`
 
 Valid options: A list of Karaf feature names as strings.
 
-##### `install_method `
-
-Specifies the install method by which to install OpenDaylight.
+##### `odl_rest_port`
 
-The RPM install method is less complex, more frequently consumed and
-recommended.
+Specifies the port for the ODL northbound REST interface to listen on.
 
-Default: `'rpm'`
+Default: `'8080'`
 
-Valid options: The strings `'tarball'` or `'rpm'`.
+Valid options: A valid port number as a string or integer.
 
-##### `odl_rest_port `
+##### `rpm_repo`
 
-Specifies the port for the ODL northbound REST interface to listen on.
+OpenDaylight CentOS CBS repo to install RPM from (opendaylight-4-testing,
+opendaylight-40-release, ...).
 
-Default: `'8080'`
+##### `deb_repo`
 
-Valid options: A valid port number as a string or integer.
+OpenDaylight Launchpad PPA repo to install .deb from (ppa:odl-team/boron,
+ppa:odl-team/carbon, ...).
 
 ##### `log_levels`
 
@@ -329,54 +293,38 @@ org.opendaylight.ovsdb.lib | INFO
 
 The main log output file is `/opt/opendaylight/data/log/karaf.log`.
 
-##### `enable_l3`
-
-Enable or disable ODL OVSDB L3 forwarding.
-
-Default: `'no'`
-
-Valid options: The strings `'yes'` or `'no'` or boolean values `true` and `false`.
-
-The ODL OVSDB L3 config in `/opt/opendaylight/etc/custom.properties` is set to
-the value of the `enable_l3` param.
-
-A manifest like
-
-```puppet
-class { 'opendaylight':
-  enable_l3 => true,
-}
-```
-
-Would would result in
-
-```
-ovsdb.l3.fwd.enabled=yes
-ovsdb.l3.arp.responder.disabled=no
-```
-
 ##### `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 and Jolokia XML for HA are configured and enabled.
+The ODL Clustering XML for HA are configured and enabled.
 
 ##### `ha_node_ips`
 
 Specifies the IPs that are part of the HA cluster enabled by `enable_ha`.
 
-Default: []
+Default: \[]
 
 Valid options: An array of IP addresses `['10.10.10.1', '10.10.10.1', '10.10.10.3']`.
 
 Required by: `enable_ha`
 
+##### `ha_db_modules`
+
+Specifies the modules to use for distributing and sharding the ODL datastore.
+
+Default: `{'default'=> false}`
+
+Valid options: A hash of module and Yang namespace for the module (default has no namespace).
+
+Requires: `enable_ha`
+
 ##### `ha_node_index`
 
 Specifies the index of the IP for the node being configured from the array `ha_node_ips`.
@@ -385,44 +333,53 @@ Default: ''
 
 Valid options: Index of a member of the array `ha_node_ips`: `0`.
 
-Required by: `enable_ha`, `ha_node_ips`
+This parameter is now deprecated and is no longer used.
 
+##### `security_group_mode`
 
-##### `tarball_url`
+Specifies the mode to use for security groups.
 
-Specifies the ODL tarball to use when installing via the tarball install
-method.
+Default: `stateful`
 
-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: `transparent`, `learn`, `stateless`
 
-Valid options: A valid URL to an ODL tarball as a string.
+##### `vpp_routing_node`
 
-##### `unitfile_url`
+Specifies the routing node for VPP deployment. A non-empty string will create config file
+org.opendaylight.groupbasedpolicy.neutron.vpp.mapper.startup.cfg with routing-node set.
 
-Specifies the ODL systemd .service file to use when installing via the tarball
-install method.
+Default: `''`
 
-It's very unlikely that you'll need to override this.
+Valid options: A valid host name to a VPP node handling routing.
 
-Default: `'https://github.com/dfarrell07/opendaylight-systemd/archive/master/opendaylight-unitfile.tar.gz'`
+##### `java_opts`
 
-Valid options: A valid URL to an ODL systemd .service file (archived in a
-tarball) as a string.
+Specifies the Java options to run ODL with as a string.
 
-##### `security_group_mode`
+Default: `'-Djava.net.preferIPv4Stack=true'`
 
-Specifies the mode to use for security groups.
+Valid options: A string of valid Java options.
 
-Default: `stateful`
+##### `username`
+
+Specifies the username to set for admin role in ODL.
+
+Default: `'admin'`
+
+Valid options: A username string.
+
+##### `password`
 
-Valid options: `transparent`, `learn`, `statless`
+Specifies the password to set for admin role in ODL.
+
+Default: `'admin'`
+
+Valid options: A password string.
 
 ## 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.
+- Tested on CentOS 7 and Ubuntu 16.04.
+- Fedora is allowed but not well-tested, no Beaker coverage.
 
 ## Development
 
@@ -436,21 +393,28 @@ OpenDaylight Puppet module.
 See the [CHANGELOG][15] or our [git tags][16] for information about releases.
 See our [git commit history][17] for contributor information.
 
-
-[1]: https://travis-ci.org/dfarrell07/puppet-opendaylight
-[2]: https://gemnasium.com/dfarrell07/puppet-opendaylight
-[4]: https://travis-ci.org/dfarrell07/puppet-opendaylight.svg
-[5]: https://gemnasium.com/dfarrell07/puppet-opendaylight.svg
 [7]: http://www.opendaylight.org/
+
 [8]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.markdown#issues
+
 [9]: https://github.com/dfarrell07/opendaylight-systemd/
-[10]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/files/upstart.odl.conf
+
 [11]: https://github.com/dfarrell07/vagrant-opendaylight/
+
 [12]: https://github.com/dfarrell07/vagrant-opendaylight/tree/master/manifests
+
 [13]: https://github.com/dfarrell07/puppet-opendaylight/issues/63
+
 [14]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.markdown
+
 [15]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/CHANGELOG
+
 [16]: https://github.com/dfarrell07/puppet-opendaylight/releases
+
 [17]: https://github.com/dfarrell07/puppet-opendaylight/commits/master
-[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
+
+[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"
+
+[20]: https://launchpad.net/~odl-team/+archive/ubuntu/boron