# == Class opendaylight::install
#
-# This class is called from opendaylight for install.
+# Manages the installation of OpenDaylight.
+#
+# There are two install methods: RPM-based and deb-based. The resulting
+# system state should be functionally equivalent.
#
class opendaylight::install {
- $base_url = $::operatingsystem ? {
- 'CentOS' => 'https://copr-be.cloud.fedoraproject.org/results/dfarrell07/OpenDaylight/epel-7-$basearch/',
- 'Fedora' => 'https://copr-be.cloud.fedoraproject.org/results/dfarrell07/OpenDaylight/fedora-$releasever-$basearch/',
- }
-
- if $::tarball_url == '' {
- yumrepo { 'opendaylight':
+ if $::osfamily == 'RedHat' {
+ # Add OpenDaylight's Yum repository
+ yumrepo { $opendaylight::rpm_repo:
# 'ensure' isn't supported with Puppet <3.5
# Seems to default to present, but docs don't say
# https://docs.puppetlabs.com/references/3.4.0/type.html#yumrepo
# https://docs.puppetlabs.com/references/3.5.0/type.html#yumrepo
- baseurl => $base_url,
- descr => 'OpenDaylight SDN controller',
- gpgcheck => 0,
+ baseurl => "http://cbs.centos.org/repos/nfv7-${opendaylight::rpm_repo}/\$basearch/os/",
+ descr => 'OpenDaylight SDN Controller',
enabled => 1,
+ # NB: RPM signing is an active TODO, but is not done. We will enable
+ # this gpgcheck once the RPM supports it.
+ gpgcheck => 0,
before => Package['opendaylight'],
}
+ # Install the OpenDaylight RPM
package { 'opendaylight':
ensure => present,
- require => Yumrepo['opendaylight'],
+ require => Yumrepo[$opendaylight::rpm_repo],
+ }
+ ->
+ # Configure the systemd file with Java options
+ file_line { 'java_options_systemd':
+ ensure => present,
+ path => '/usr/lib/systemd/system/opendaylight.service',
+ line => "Environment=_JAVA_OPTIONS=\'${opendaylight::java_opts}\'",
+ match => '^Environment.*',
+ after => 'ExecStart=/opt/opendaylight/bin/start',
+ }
+ ~>
+ exec {'reload_systemd_units':
+ command => 'systemctl daemon-reload',
+ path => '/bin',
+ refreshonly => true,
}
}
- else {
- archive { 'opendaylight-0.2.2':
- ensure => present,
- # TODO: Removed hard-coded URL, use param
- url => 'https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz',
- target => '/opt/',
- checksum => false,
- # This discards top-level dir of extracted tarball
- # Required to get proper /opt/opendaylight-<version> path
- # Ideally, camptocamp/puppet-archive would support this. PR later?
- strip_components => 1,
+
+ elsif $::osfamily == 'Debian'{
+
+ include apt
+
+ # Add ODL ppa repository
+ apt::ppa{ $opendaylight::deb_repo: }
+
+ # Install Opendaylight .deb pkg
+ package { 'opendaylight':
+ ensure => present,
+ require => Apt::Ppa[$opendaylight::deb_repo],
}
- # TODO: Download ODL systemd .service file and put in right location
+
+ Apt::Ppa[$opendaylight::deb_repo] -> Package['opendaylight']
+ }
+ else {
+ fail("Unknown operating system method: ${::osfamily}")
}
}