Router Advertisement daemon support for CentOS/RHEL and OpenBSD.

This commit is contained in:
Ossi Herrala 2012-11-22 11:19:04 +00:00
parent 24aea7045b
commit 8b75fc924e

View file

@ -567,3 +567,96 @@ class network::manager::disable {
}
}
# Define IPv6 prefixes for advertisement
#
# === Sample usage
#
# network::ipv6prefix { "em1":
# prefix => "2001:db8:c0de:cafe::/64"
# }
define network::ipv6prefix($prefix = "", $description = "") {
case $::operatingsystem {
"centos","redhat": {
file { "/etc/radvd.conf.d":
ensure => directory,
}
file { "/etc/radvd.conf.d/radvd-${name}.conf":
ensure => present,
mode => "0644",
owner => "root",
group => "root",
content => template("network/radvd.conf.erb"),
require => File["/etc/radvd.conf.d"],
notify => Exec["generate-radvd-conf"],
}
}
"openbsd": {
file { "/etc/rtadvd.conf.d":
ensure => directory,
}
file { "/etc/rtadvd.conf.d/rtadvd-${name}.conf":
ensure => present,
mode => "0644",
owner => "root",
group => "wheel",
content => template("network/rtadvd.conf.erb"),
before => Service["rtadvd-${name}"],
notify => Service["rtadvd-${name}"],
}
service { "rtadvd-${name}":
ensure => running,
enable => true,
start => "/usr/sbin/rtadvd -c /etc/rtadvd.conf.d/rtadvd-${name}.conf ${name}",
stop => "/usr/bin/pkill -f \"^/usr/sbin/rtadvd -c [^ ]+ ${name}\$\"",
status => "/usr/bin/pgrep -f \"^/usr/sbin/rtadvd -c [^ ]+ ${name}\$\"",
}
}
default: {
fail("Router advertisement not supported in $::operatingsystem.")
}
}
}
# Router Advertisement daemon
#
class network::routeradvertisement {
case $::operatingsystem {
"centos","redhat": {
package { "radvd":
ensure => installed,
}
service { "radvd":
ensure => running,
enable => true,
hasstatus => true,
require => [File["/etc/radvd.conf"], Package["radvd"]],
}
file { "/etc/radvd.conf":
ensure => present,
mode => "0644",
owner => "root",
group => "root",
require => Exec["generate-radvd-conf"],
notify => Service["radvd"],
}
exec { "generate-radvd-conf":
command => "/bin/cat /etc/radvd.conf.d/radvd-*.conf >/etc/radvd.conf",
path => "/bin:/usr/bin:/sbin:/usr/sbin",
refreshonly => true,
}
}
"openbsd": {
# Only network::ipv6network is needed for OpenBSD
}
default: {
fail("Router advertisement not supported in $::operatingsystem")
}
}
}