Refactors how install method is selected
[integration/packaging/puppet-opendaylight.git] / README.markdown
index 1bb985b9e14b2da88bbb855dbdc010b19a031b91..57d04c9a19b833bee32dce11cc6045ba22b4e864 100644 (file)
@@ -1,5 +1,5 @@
-#### Table of Contents
-
+[![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)
+#### Table of Contents 
 1. [Overview](#overview)
 2. [Module Description - What the module does and why it is useful](#module-description)
 3. [Setup - The basics of getting started with opendaylight](#setup)
 
 ## Overview
 
-A one-maybe-two sentence summary of what the module does/what problem it solves. This is your 30 second elevator pitch for your module. Consider including OS/Puppet version it works with.       
+Puppet module for deploying the OpenDaylight Software Defined Networking (SDN) controller.
 
 ## Module Description
 
-If applicable, this section should have a brief description of the technology the module integrates with and what that integration enables. This section should answer the questions: "What does this module *do*?" and "Why would I use it?"
+Stands up the OpenDaylight SDN controller from an RPM, including systemd configuration.
 
-If your module has a range of functionality (installation, configuration, management, etc.) this is the time to mention it.
+The currently supported OpenDaylight version is Helium SR2 (0.2.2).
 
 ## Setup
 
 ### What opendaylight affects
 
-* A list of files, packages, services, or operations that the module will alter, impact, or execute on the system it's installed on.
-* This is a great place to stick any warnings.
-* Can be in list or paragraph form. 
+* Installs OpenDaylight archive in /opt/ (may change as RPM matures).
+* Installs a [systemd unit file](https://github.com/dfarrell07/opendaylight-systemd/) for OpenDaylight.
+* Creates `odl:odl` user:group if they don't already exist.
 
-### Setup Requirements **OPTIONAL**
+### Beginning with opendaylight
 
-If your module requires anything extra before setting up (pluginsync enabled, etc.), mention it here. 
+To install and start OpenDaylight, include the `opendaylight` class: `include opendaylight`.
 
-### Beginning with opendaylight
+## Usage
 
-The very basic steps needed for a user to get the module up and running. 
+The most basic usage, passing no parameters to the OpenDaylight class, will install and start OepnDaylight with a default configuration.
 
-If your most recent release breaks compatibility or requires particular steps for upgrading, you may wish to include an additional section here: Upgrading (For an example, see http://forge.puppetlabs.com/puppetlabs/firewall).
+```
+class { 'opendaylight':
+}
+```
 
-## Usage
+To set extra Karaf features to be installed at OpenDaylight start time, pass them in a list to the `extra_features` param.
+
+```
+class { 'opendaylight':
+  extra_features => ['odl-ovsdb-plugin', 'odl-ovsdb-openstack'],
+}
+```
 
-Put the classes, types, and resources for customizing, configuring, and doing the fancy stuff with your module here. 
+A set of default Karaf features will be set to be installed at ODL start automatically. To override them, pass replacement defaults to the `default_features` param.
+
+```
+class { 'opendaylight':
+  extra_features => ['odl-ovsdb-plugin', 'odl-ovsdb-openstack'],
+  default_features => ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management'],
+}
+```
 
 ## Reference
 
-Here, list the classes, types, providers, facts, etc contained in your module. This section should include all of the under-the-hood workings of your module so people know what the module is touching on their system but don't need to mess with things. (We are working on automating this section!)
+### Classes
+
+#### Public classes
+
+* `opendaylight`: This is the modules main class. It installs and configures OpenDaylight.
+
+#### Private classes
+
+* `opendaylight::params`: Manages default param values.
+* `opendaylight::config`: Manages the Karaf config file via a template.
+* `opendaylight::install`: Chooses the correct Yum repo URL based on OS, installs the OpenDaylight Yum repo, installs the OpenDaylight RPM.
+* `opendaylight::service`: Configures and starts the OpenDaylight service.
 
 ## Limitations
 
-This is where you list OS compatibility, version compatibility, etc.
+* The target OS must use systemd (Fedora 15+, CentOS 7+).
+* Only tested on Fedora 20, 21 and CentOS 7.
+* Currently only supports RPM-based installs.
 
 ## Development
 
-Since your module is awesome, other users will want to play with it. Let them know what the ground rules for contributing are.
+See [CONTRIBUTING.md](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.md) for details about how to contribute to this OpenDaylight Puppet module.
 
-## Release Notes/Contributors/Etc **Optional**
+## Release Notes/Contributors
 
-If you aren't using changelog, put your release notes here (though you should consider using changelog). You may also add any additional sections you feel are necessary or important to include here. Please use the `## ` header. 
+See the [CHANGELOG](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CHANGELOG) for information about releases and [CONTRIBUTORS](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTORS) file for a list of folks who have contributed.