diff options
author | crayfishx <craig@craigdunn.org> | 2012-07-10 12:51:23 -0700 |
---|---|---|
committer | crayfishx <craig@craigdunn.org> | 2012-07-10 12:51:23 -0700 |
commit | 408f02ba9cb24804a09462ce5448c49bf1c0c8ca (patch) | |
tree | 2957700e3427b026a1732b63a330f6806c2ffddc | |
parent | f8f6723253b8c34577e8eeb0b5bd2364b24dca4a (diff) | |
download | puppet-tftp-408f02ba9cb24804a09462ce5448c49bf1c0c8ca.tar.gz puppet-tftp-408f02ba9cb24804a09462ce5448c49bf1c0c8ca.tar.bz2 |
Add EL (RHEL/CentOS) support for tftp.
* EL tftpd-hpa package is called tftp-server
* Distributed RPM doesn't provide an init file so the base provider is needed
* Default username for tftp-server on RHEL is nobody
* no /etc/default/tftpd-hpa should be pushed for EL systems
-rw-r--r-- | manifests/init.pp | 34 | ||||
-rw-r--r-- | manifests/params.pp | 54 |
2 files changed, 62 insertions, 26 deletions
diff --git a/manifests/init.pp b/manifests/init.pp index 9dfab37..5057eb2 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -31,19 +31,26 @@ class tftp ( $port = $tftp::params::port, $options = $tftp::params::options, $inetd = false, - $inetd_conf = $tftp::params::inetd_conf + $inetd_conf = $tftp::params::inetd_conf, + $package = $tftp::params::package, + $binary = $tftp::params::binary, + $defaults = $tftp::params::defaults ) inherits tftp::params { + package { 'tftpd-hpa': - ensure => present, + ensure => present, + name => $package, } - - file { '/etc/default/tftpd-hpa': - ensure => file, - owner => 'root', - group => 'root', - mode => '0644', - content => template('tftp/tftpd-hpa.erb'), - require => Package['tftpd-hpa'], + if $defaults { + file { '/etc/default/tftpd-hpa': + ensure => file, + owner => 'root', + group => 'root', + mode => '0644', + content => template('tftp/tftpd-hpa.erb'), + require => Package['tftpd-hpa'], + notify => Service['tftpd-hpa'], + } } if $inetd { @@ -77,12 +84,17 @@ class tftp ( $svc_enable = true } + $start = $binary ? { + undef => undef, + default => "${binary} -l -a ${address}:${port} -u ${username} ${options} ${directory}" + } + service { 'tftpd-hpa': ensure => $svc_ensure, enable => $svc_enable, provider => $tftp::params::provider, hasstatus => $tftp::params::hasstatus, pattern => '/usr/sbin/in.tftpd', - subscribe => File['/etc/default/tftpd-hpa'], + start => $start, } } diff --git a/manifests/params.pp b/manifests/params.pp index e658184..b688dd5 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -4,28 +4,52 @@ class tftp::params { $address = '0.0.0.0' $port = '69' - $username = 'tftp' $options = '--secure' $inetd_conf = '/etc/inetd.conf' - case $::operatingsystem { + case $::osfamily { 'debian': { - # hasstatus is to get around an issue where the service script appears to - # be broken. - $directory = '/srv/tftp' - $hasstatus = false - $provider = undef + $package = 'tftpd-hpa' + $defaults = true + $binary = undef + $username = 'tftp' + case $::operatingsystem { + 'debian': { + $directory = '/srv/tftp' + $hasstatus = false + $provider = undef + } + 'ubuntu': { + $directory = '/var/lib/tftpboot' + $hasstatus = true + $provider = 'upstart' + } + default: { + $directory = '/var/lib/tftpboot' + $hasstatus = true + $provider = undef + warning("tftp:: cannot determine settings for $::operatingsystem") + } + } } - 'ubuntu': { - $directory = '/var/lib/tftpboot' - $hasstatus = true - $provider = 'upstart' + 'redhat': { + $package = 'tftp-server' + $username = 'nobody' + $defaults = false + $directory = '/var/lib/tftpboot' + $hasstatus = false + $provider = 'base' + $binary = '/usr/sbin/in.tftpd' } default: { - warning("tftp:: not verified on operatingsystem ${::operatingsystem}.") - $directory = '/var/lib/tftpboot' - $hasstatus = true - $provider = undef + $package = 'tftpd' + $username = 'nobody' + $defaults = false + $hasstatus = false + $provider = undef + $binary = '/usr/sbin/in.tftpd' + warning("tftp:: $::operatingsystem may not be supported") } } + } |