1 # == Class: opendaylight
3 # OpenDaylight SDN Controller
7 # Features that should normally be installed by default, but can be
10 # List of features to install in addition to the default ones.
12 # Port for ODL northbound REST interface to listen on.
14 # IP for ODL northbound REST interface to bind to.
16 # OpenDaylight CentOS CBS repo to install RPM from (opendaylight-4-testing,
17 # opendaylight-40-release, ...).
19 # OpenDaylight Launchpad PPA repo to install .deb from (ppa:odl-team/boron,
20 # ppa:odl-team/carbon, ...).
22 # Custom OpenDaylight logger verbosity configuration (TRACE, DEBUG, INFO, WARN, ERROR).
24 # Enable or disable ODL OVSDB HA Clustering. Valid: true or false.
27 # Array of IPs for each node in the HA cluster.
29 # Index of ha_node_ips for this node.
30 # [*security_group_mode*]
31 # Sets the mode to use for security groups (stateful, learn, stateless, transparent)
32 # [*vpp_routing_node*]
33 # Sets routing node for VPP deployments. Defaults to ''.
35 # Sets Java options for ODL in a string format. Defaults to '-Djava.net.preferIPv4Stack=true'.
36 # [*manage_repositories*]
37 # (Boolean) Should this module manage the apt or yum repositories for the
38 # package installation.
42 $default_features = $::opendaylight::params::default_features,
43 $extra_features = $::opendaylight::params::extra_features,
44 $odl_rest_port = $::opendaylight::params::odl_rest_port,
45 $odl_bind_ip = $::opendaylight::params::odl_bind_ip,
46 $rpm_repo = $::opendaylight::params::rpm_repo,
47 $deb_repo = $::opendaylight::params::deb_repo,
48 $log_levels = $::opendaylight::params::log_levels,
49 $enable_ha = $::opendaylight::params::enable_ha,
50 $ha_node_ips = $::opendaylight::params::ha_node_ips,
51 $ha_node_index = $::opendaylight::params::ha_node_index,
52 $security_group_mode = $::opendaylight::params::security_group_mode,
53 $vpp_routing_node = $::opendaylight::params::vpp_routing_node,
54 $java_opts = $::opendaylight::params::java_opts,
55 $manage_repositories = $::opendaylight::params::manage_repositories,
56 ) inherits ::opendaylight::params {
62 warning('Debian has limited support, is less stable, less tested.')
65 fail("Unsupported OS family: ${::osfamily}")
70 case $::operatingsystem {
72 if $::operatingsystemmajrelease != '7' {
73 # RHEL/CentOS versions < 7 not supported as they lack systemd
74 fail("Unsupported OS: ${::operatingsystem} ${::operatingsystemmajrelease}")
75 } elsif defined('$::operatingsystemrelease') {
76 if (versioncmp($::operatingsystemrelease, '7.3') < 0) {
77 # Versions < 7.3 do not support stateful security groups
78 $stateful_unsupported = true
83 # Fedora distros < 24 are EOL as of 2016-12-20
84 # https://fedoraproject.org/wiki/End_of_life
85 if $::operatingsystemmajrelease < '24' {
86 fail("Unsupported OS: ${::operatingsystem} ${::operatingsystemmajrelease}")
88 warning('Fedora is not as well tested as CentOS.')
92 if $::operatingsystemrelease < '16.04' {
93 # Only tested on 16.04
94 fail("Unsupported OS: ${::operatingsystem} ${::operatingsystemrelease}")
98 fail("Unsupported OS: ${::operatingsystem}")
101 # Build full list of features to install
102 $features = union($default_features, $extra_features)
104 class { '::opendaylight::install': }
105 -> class { '::opendaylight::config': }
106 ~> class { '::opendaylight::service': }
107 -> Class['::opendaylight']