puppet/tftp/manifests/init.pp

105 lines
2.4 KiB
Puppet

# Install tftp server
#
# === Global variables:
#
# $tftp_datadir:
# Directory containing tftp files.
#
class tftp::server {
include inetd::server
if $tftp_datadir {
file { "${tftp_datadir}":
ensure => directory,
mode => 0755,
owner => root,
group => root,
seltype => "tftpdir_t",
}
file { "/srv/tftpboot":
ensure => link,
target => "${tftp_datadir}",
seltype => "tftpdir_t",
require => File["${tftp_datadir}"],
}
} else {
file { "/srv/tftpboot":
ensure => directory,
mode => 0755,
owner => root,
group => root,
seltype => "tftpdir_t",
}
}
if $operatingsystem == "Fedora" {
file { "/var/lib/tftpboot":
ensure => link,
target => "/srv/tftpboot",
force => true,
require => File["/srv/tftpboot"],
}
} else {
file { "/tftpboot":
ensure => link,
target => "/srv/tftpboot",
force => true,
require => File["/srv/tftpboot"],
}
}
if $selinux {
selinux::manage_fcontext { "/srv/tftpboot(/.*)?":
type => "tftpdir_t",
before => File["/srv/tftpboot"],
}
if $tftp_datadir {
selinux::manage_fcontext { "${tftp_datadir}(/.*)?":
type => "tftpdir_t",
before => File["${tftp_datadir}"],
}
}
}
package { "tftp-server":
name => $operatingsystem ? {
ubuntu => "tftpd-hpa",
debian => "tftpd-hpa",
default => "tftp-server",
},
ensure => installed,
}
case $operatingsystem {
debian,ubuntu: {
file { "/etc/xinetd.d/tftp":
ensure => present,
source => "puppet:///tftp/tftp.xinetd",
mode => 0644,
owner => root,
group => root,
notify => Service["xinetd"],
}
}
default: {
inetd::service { "tftp":
ensure => present,
require => Package["tftp-server"],
}
}
}
}
# Install tftp client tools
#
class tftp::client {
package { "tftp":
ensure => installed,
}
}