Merge "Bump Puppet version 4.x to 5.x"
[integration/packaging/puppet-opendaylight.git] / README.markdown
index 651bb47bbb68e9f65f7629a583f6e34decefe0d1..6ceaf65e4020f09e81830004918f74745a1877d8 100644 (file)
@@ -1,6 +1,3 @@
-[![CI Status][4]][1]
-[![Dependency Status][5]][2]
-
 # OpenDaylight
 
 #### Table of Contents
 # OpenDaylight
 
 #### Table of Contents
 ## Overview
 
 Puppet module that installs and configures the [OpenDaylight Software Defined
 ## 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 a Deb.
 
 All OpenDaylight configuration should be handled through the ODL Puppet
 
 ## Module Description
 
 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).
 
 
-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.
+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
 
 
 ## Setup
 
@@ -49,8 +45,7 @@ branches that install OpenDaylight releases and service releases, like Beryllium
 
 - Installs Java, which is required by ODL.
 - Creates `odl:odl` user:group if they don't already exist.
 
 - 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.
+- 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 service.
 - Manipulates OpenDaylight's configuration files according to the params
   passed to the `::opendaylight` class.
 - Starts the `opendaylight` systemd service.
@@ -60,17 +55,6 @@ branches that install OpenDaylight releases and service releases, like Beryllium
 Getting started with the OpenDaylight Puppet module is as simple as declaring
 the `::opendaylight` class.
 
 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 VMs.
-
-```
-# Provision a CentOS VM using puppet-opendaylight
-$ vagrant up cent7_pup_rpm
-$ vagrant ssh cent7_pup_rpm
-$ sudo systemctl is-active opendaylight
-active
-```
-
 ## Usage
 
 The most basic usage, passing no parameters to the OpenDaylight class, will
 ## Usage
 
 The most basic usage, passing no parameters to the OpenDaylight class, will
@@ -105,52 +89,42 @@ class { 'opendaylight':
 }
 ```
 
 }
 ```
 
-### RPM Repo
+### RPM Repository
 
 The `rpm_repo` param can be used to configure which RPM repository
 OpenDaylight is installed from.
 
 ```puppet
 class { 'opendaylight':
 
 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 => 'https://nexus.opendaylight.org/content/repositories/opendaylight-neon-epel-7-$basearch-devel',
 }
 ```
 
 }
 ```
 
-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
-`-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).
+The URL should be formatted like a baseurl in RPM .repo config files. In
+particular, note the $basearch variable, which should be left form the
+package manager (yum, dnf) to populate.
 
 
-For a full list of OpenDaylight releases and their CBS repos, see the
-[OpenDaylight Deployment wiki][19].
+For additional information about ODL RPM repos, see the [Integration/Packaging
+RPM repositories documentation][2].
 
 
-This is only read for RedHat based operating systems. For Debian based OSs,
-this values is `none`.
+This is only read for Red Hat-family operating systems.
 
 
-### Deb Repo
+### Deb Repository
 
 The `deb_repo` param can be used to configure which Deb repository
 OpenDaylight is installed from.
 
 ```puppet
 class { 'opendaylight':
 
 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',
+  deb_repo => 'ppa:odl-team/nitrogen',
 }
 ```
 
 The naming convention is same as the naming convention of Launchpad PPA's,
 }
 ```
 
 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.
+which is where ODL .debs are hosted. The `ppa:odl-team/nitrogen` example above
+would install OpenDaylight Nitrogen from the [Nitrogen launchpad repo][3].
 
 
-This is only read for Debian based operating systems. For RedHat based OSs,
-this values is `none`.
+This is only read for Debian-family operating systems.
 
 ### Ports
 
 
 ### Ports
 
@@ -159,7 +133,7 @@ calls, use the `odl_rest_port` param.
 
 ```puppet
 class { 'opendaylight':
 
 ```puppet
 class { 'opendaylight':
-  odl_rest_port => '8080',
+  odl_rest_port => '8181',
 }
 ```
 
 }
 ```
 
@@ -180,18 +154,54 @@ 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 HA cluster and
 
 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 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
+`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.
 
 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'],
 ```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'}
 }
 ```
 
 }
 ```
 
+### Configuring websocket address
+
+Websocket address can be configured to the IP of ODL rather than default 0.0.0.0. This IP will
+be defined by `odl_bind_ip`.
+
+### Enabling TLS with OpenDaylight
+
+It is possible to enable TLS encrypted communication for OpenDaylight Northbound REST
+along with Southbound OVSDB/OpenFlow communication with Open vSwitch. To enable
+TLS, use the `enable_tls` flag. This option will create two keystores in OpenDaylight
+which are stored in '/opt/opendaylight/configuration/ssl'. The first keystore
+is the controller keystore, which will hold the private key and ODL certificate,
+along with the Certificate Authority (CA) certificate if provided. The second
+keystore is the trust keystore, which will hold the trusted OVS switch certificates.
+
+In order to enable TLS, it is required to provide the `tls_keystore_password`
+parameter. This represents the password to use for the controller and truststore
+keystores. With only providing these parameters, ODL will generate the
+controller keystore with a random private key and self-signed certficate.
+
+Additionally the `tls_key_file` and `tls_cert_file` parameters may be provided.
+These represent ODL's private key file and certificate file to be used when building
+the controller keystore. Optionally the `tls_ca_cert_file` may be provided which
+will chain the CA certificate to the keystore for client validation.
+
+`tls_trusted_certs` may be provided as an array of trusted certificates to be
+added to the trusted keystore. This allows OpenDaylight to identify trusted
+clients which may connect to ODL Southbound and Northbound.
+
 ## Reference
 
 ### Classes
 ## Reference
 
 ### Classes
@@ -237,19 +247,18 @@ Valid options: A list of Karaf feature names as strings.
 
 Specifies the port for the ODL northbound REST interface to listen on.
 
 
 Specifies the port for the ODL northbound REST interface to listen on.
 
-Default: `'8080'`
+Default: `'8181'`
 
 Valid options: A valid port number as a string or integer.
 
 ##### `rpm_repo`
 
 
 Valid options: A valid port number as a string or integer.
 
 ##### `rpm_repo`
 
-OpenDaylight CentOS CBS repo to install RPM from (opendaylight-4-testing,
-opendaylight-40-release, ...).
+Repo URL to install ODL RPM from, in .repo baseurl format.
 
 ##### `deb_repo`
 
 OpenDaylight Launchpad PPA repo to install .deb from (ppa:odl-team/boron,
 
 ##### `deb_repo`
 
 OpenDaylight Launchpad PPA repo to install .deb from (ppa:odl-team/boron,
-ppa:odl-team/carbon, ...).
+ppa:odl-team/nitrogen, ...).
 
 ##### `log_levels`
 
 
 ##### `log_levels`
 
@@ -270,10 +279,12 @@ The above example would add the following logging configuration to
 
 ```
 # Log level config added by puppet-opendaylight
 
 ```
 # Log level config added by puppet-opendaylight
-log4j.logger.org.opendaylight.ovsdb = TRACE
+log4j2.logger.org_opendaylight_ovsdb.level = TRACE
+log4j2.logger.org_opendaylight_ovsdb.name = org.opendaylight.ovsdb
 
 # Log level config added by puppet-opendaylight
 
 # Log level config added by puppet-opendaylight
-log4j.logger.org.opendaylight.ovsdb.lib = INFO
+log4j2.logger.org_opendaylight_ovsdb_lib.level = INFO
+log4j2.logger.org_opendaylight_ovsdb_lib.name = org.opendaylight.ovsdb.lib
 ```
 
 To view loggers and their verbosity levels, use `log:list` at the ODL Karaf shell.
 ```
 
 To view loggers and their verbosity levels, use `log:list` at the ODL Karaf shell.
@@ -289,6 +300,92 @@ org.opendaylight.ovsdb.lib | INFO
 
 The main log output file is `/opt/opendaylight/data/log/karaf.log`.
 
 
 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: `500MB`
+
+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: `4`
+
+Valid options: An integer greater than 0.
+
+##### `log_rollover_fileindex`
+
+String that controls file index to use when log rollovers are initiated.
+
+If set to 'max', files with a higher index will be newer than files with
+a smaller index.
+
+If set to 'min', file with a lower index will be newer than files with a
+higher index.
+
+If set to 'nomax', the min and max values will be ignored, and file
+numbering will increment by 1 and each rollover will have an
+incrementally higher value with no maximum number of files.
+
+Default: `min`
+
+Valid options: 'min', 'max', 'nomax'
+
+##### `log_mechanism`
+
+Logging mechanism for karaf logs. They are logged either to a file or console.
+When `log_mechanism` is `file`, log files are configured as per `log_max_size`
+and `log_max_rollover`.
+
+Default: `file`
+
+Valid options: `file`, `console`.
+
+##### `log_pattern`
+
+String that controls the log pattern used for logging.
+
+Default: `%d{ISO8601} | %-5p | %-16t | %-60c{6} | %m%n`
+
+Valid options: A valid string that is a valid log4j2 pattern.
+
+##### `enable_paxosgi_logger`
+
+Boolean that controls whether the PaxOsgi appender is enabled for logging.
+
+Note that enabling this will also require to modify the log pattern to
+make use of the added capabilities. To do so the variable `log_pattern` should
+be overriden to include a pattern that includes the tokens that PaxOsgi adds.
+
+This could be achieving, for example, by setting `log_pattern` to a string
+that includes:
+
+'%X{bundle.id} - %X{bundle.name} - %X{bundle.version}'
+
+Failure to change the `log_pattern` will mean that the PaxOsgi appender will
+be enabled but the added functionality not used on the logging. This has no
+negative effect on the system and it will continue to run, just it will not
+include the added information one could get from PaxOsgi.
+
+A good example would be to set this variable to `true` and set `log_pattern`
+to:
+
+'%d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n'
+
+Default: `false`
+
+Valid options: The boolean values `true` and `false`.
+
 ##### `enable_ha`
 
 Enable or disable ODL High Availablity.
 ##### `enable_ha`
 
 Enable or disable ODL High Availablity.
@@ -297,7 +394,7 @@ Default: `false`
 
 Valid options: The boolean values `true` and `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 Clustering XML for HA are configured and enabled.
 
 
 The ODL Clustering XML for HA are configured and enabled.
 
@@ -311,6 +408,16 @@ Valid options: An array of IP addresses `['10.10.10.1', '10.10.10.1', '10.10.10.
 
 Required by: `enable_ha`
 
 
 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`.
 ##### `ha_node_index`
 
 Specifies the index of the IP for the node being configured from the array `ha_node_ips`.
@@ -319,15 +426,15 @@ Default: ''
 
 Valid options: Index of a member of the array `ha_node_ips`: `0`.
 
 
 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`
+##### `snat_mechanism`
 
 
-Specifies the mode to use for security groups.
+Specifies the mechanism to be used for SNAT.
 
 
-Default: `stateful`
+Default: `controller`
 
 
-Valid options: `transparent`, `learn`, `stateless`
+Valid options: `conntrack`, `controller`
 
 ##### `vpp_routing_node`
 
 
 ##### `vpp_routing_node`
 
@@ -340,59 +447,77 @@ Valid options: A valid host name to a VPP node handling routing.
 
 ##### `java_opts`
 
 
 ##### `java_opts`
 
-Specifies the Java options to run ODL with as a string.
+Specifies the Java options to run ODL with as a string. Note, these options
+are in addition to the default Java options set by the karaf/ODL boot scripts
+and IP version based flag set by 'opendaylight' class.
 
 
-Default: `'-Djava.net.preferIPv4Stack=true'`
+Default: `''`
 
 Valid options: A string of valid Java options.
 
 
 Valid options: A string of valid Java options.
 
-## Limitations
+##### `username`
 
 
-- Tested on CentOS 7 and Ubuntu 16.04.
-- Fedora is allowed but not well-tested, no Beaker coverage.
+Specifies the username to set for admin role in ODL.
 
 
-## Development
+Default: `'admin'`
 
 
-We welcome contributions and work to make them easy!
+Valid options: A username string.
 
 
-See [CONTRIBUTING.markdown][14] for details about how to contribute to the
-OpenDaylight Puppet module.
+##### `password`
+
+Specifies the password to set for admin role in ODL.
+
+Default: `'admin'`
 
 
-## Release Notes/Contributors
+Valid options: A password string.
 
 
-See the [CHANGELOG][15] or our [git tags][16] for information about releases.
-See our [git commit history][17] for contributor information.
+### `inherit_dscp_marking`
 
 
-[1]: https://travis-ci.org/dfarrell07/puppet-opendaylight
+Specifies whether DSCP marking is enabled for packets egressing out of OVS through
+VXLAN/GRE tunnels.
 
 
-[2]: https://gemnasium.com/dfarrell07/puppet-opendaylight
+Default: `false`
+
+Valid options: `true`, `false`
 
 
-[4]: https://travis-ci.org/dfarrell07/puppet-opendaylight.svg?branch=master
+### `stats_polling_enabled`
 
 
-[5]: https://gemnasium.com/dfarrell07/puppet-opendaylight.svg?branch=master
+Enables statistics polling of OpenFlow entities like table, groups.
 
 
-[7]: http://www.opendaylight.org/
+Default: `false`
 
 
-[8]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.markdown#issues
+Valid options: `true`, `false`
 
 
-[9]: https://github.com/dfarrell07/opendaylight-systemd/
+### `inactivity_probe`
 
 
-[11]: https://github.com/dfarrell07/vagrant-opendaylight/
+Configures inactivity probe timer when specified.
 
 
-[12]: https://github.com/dfarrell07/vagrant-opendaylight/tree/master/manifests
+Default: `undef`
 
 
-[13]: https://github.com/dfarrell07/puppet-opendaylight/issues/63
+Valid options: An integer or string in milliseconds.
+
+## Limitations
+
+- Tested on CentOS 7 and Ubuntu 16.04.
+- Fedora is allowed but not well-tested, no Beaker coverage.
+
+## Development
+
+We welcome contributions and work to make them easy!
+
+See [CONTRIBUTING.markdown][4] for details about how to contribute to the
+OpenDaylight Puppet module.
 
 
-[14]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.markdown
+## Release Notes
 
 
-[15]: https://github.com/dfarrell07/puppet-opendaylight/blob/master/CHANGELOG
+See the [CHANGELOG][5] for information about releases.
 
 
-[16]: https://github.com/dfarrell07/puppet-opendaylight/releases
+[1]: http://www.opendaylight.org/ "OpenDaylight homepage"
 
 
-[17]: https://github.com/dfarrell07/puppet-opendaylight/commits/master
+[2]: http://docs.opendaylight.org/en/latest/submodules/integration/packaging/docs/rpms.html#repositories "ODL RPM repo docs"
 
 
-[18]: http://cbs.centos.org/repos/nfv7-opendaylight-40-release/x86_64/os/Packages/ "OpenDaylight Beryllium CentOS CBS repo"
+[3]: https://launchpad.net/~odl-team/+archive/ubuntu/nitrogen "ODL Nitrogen Deb repo"
 
 
-[18]: https://wiki.opendaylight.org/view/Deployment#RPM "OpenDaylight RPMs and their repos"
+[4]: https://git.opendaylight.org/gerrit/gitweb?p=integration/packaging/puppet-opendaylight.git;a=blob;f=CONTRIBUTING.markdown "Contributing docs"
 
 
-[20]: https://launchpad.net/~odl-team/+archive/ubuntu/boron
+[5]: https://git.opendaylight.org/gerrit/gitweb?p=integration/packaging/puppet-opendaylight.git;a=blob;f=CHANGELOG "Chagelog"