Drew Fisher 1794f54fbe Add Solaris support
This patch adds Solaris support for configuration of openvswitch.

Change-Id: I9372eae6d084443f8e6bc7110b566e69b92d2a99
2016-03-22 12:56:59 -06:00

129 lines
3.8 KiB
Puppet

# vswitch: open-vswitch
# == Class: vswitch::ovs
#
# installs openvswitch
#
# === Parameters:
#
# [*package_ensure*]
# (Optional) State of the openvswitch package
# Defaults to 'present'.
#
# [*dkms_ensure*]
# (optional) on debian/wheezy, ubuntu/precise, ubuntu/trusty and
# ubuntu/utopic dkms (Dynamic Kernel Module Support) is used to
# have a kernel module which matches the running kernel.
# In newer distributions (which ship with a newer kernel) dkms
# is not available anymore for openvswitch.
# For RedHat this parameter is ignored.
# If you like turn off dkms on Debian/Ubuntu set to
# false. defaults to true.
class vswitch::ovs(
$package_ensure = 'present',
$dkms_ensure = true,
) {
include ::vswitch::params
case $::osfamily {
'Debian': {
if $dkms_ensure {
package { $::vswitch::params::ovs_dkms_package_name:
ensure => $package_ensure,
}
# OVS doesn't build unless the kernel headers are present.
$kernelheaders_pkg = "linux-headers-${::kernelrelease}"
if ! defined(Package[$kernelheaders_pkg]) {
package { $kernelheaders_pkg: ensure => $package_ensure }
}
exec { 'rebuild-ovsmod':
command => '/usr/sbin/dpkg-reconfigure openvswitch-datapath-dkms > /tmp/reconf-log',
creates => "/lib/modules/${::kernelrelease}/updates/dkms/openvswitch_mod.ko",
require => [Package[$::vswitch::params::ovs_dkms_package_name , $kernelheaders_pkg]],
before => Package['openvswitch-switch'],
refreshonly => true,
}
}
case $::operatingsystem {
'ubuntu': {
$ovs_status = '/sbin/status openvswitch-switch | fgrep "start/running"'
}
default: {
$ovs_status = '/etc/init.d/openvswitch-switch status | fgrep -q "not running"; if [ $? -eq 0 ]; then exit 1; else exit 0; fi'
}
}
service { 'openvswitch':
ensure => true,
enable => true,
name => $::vswitch::params::ovs_service_name,
hasstatus => false, # the supplied command returns true even if it's not running
status => $ovs_status,
}
if $::ovs_version {
$major_version = regsubst($::ovs_version, '^(\d+).*', '\1')
if $major_version == '1' {
$kernel_mod_file = "/lib/modules/${::kernelrelease}/updates/dkms/openvswitch_mod.ko"
} else {
$kernel_mod_file = "/lib/modules/${::kernelrelease}/updates/dkms/openvswitch.ko"
}
}
}
'Redhat': {
service { 'openvswitch':
ensure => true,
enable => true,
name => $::vswitch::params::ovs_service_name,
}
}
'FreeBSD': {
Package {
provider => 'pkgng',
}
service { 'ovsdb-server':
ensure => true,
enable => true,
name => $::vswitch::params::ovsdb_service_name,
status => $::vswitch::params::ovsdb_status,
}
~>
service { 'openvswitch':
ensure => true,
enable => true,
name => $::vswitch::params::ovs_service_name,
status => $::vswitch::params::ovs_status,
}
}
'Solaris': {
service { 'ovsdb-server':
ensure => true,
enable => true,
name => $::vswitch::params::ovsdb_service_name,
status => $::vswitch::params::ovsdb_status,
}
~>
service { 'openvswitch':
ensure => true,
enable => true,
name => $::vswitch::params::ovs_service_name,
status => $::vswitch::params::ovs_status,
}
}
default: {
fail( "${::osfamily} not yet supported by puppet-vswitch")
}
}
package { $::vswitch::params::ovs_package_name:
ensure => $package_ensure,
before => Service['openvswitch'],
}
Service['openvswitch'] -> Vs_port<||>
Service['openvswitch'] -> Vs_bridge<||>
}