aboutsummaryrefslogtreecommitdiff
path: root/manifests
diff options
context:
space:
mode:
Diffstat (limited to 'manifests')
-rw-r--r--manifests/init.pp62
-rw-r--r--manifests/params.pp9
2 files changed, 61 insertions, 10 deletions
diff --git a/manifests/init.pp b/manifests/init.pp
index 0a38297..13954b5 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -2,18 +2,36 @@
#
# Parameters:
#
+# [*username*]: tftp service username.
+# [*directory*]: tftp service file directory.
+# [*address*]: tftp service bind address (default 0.0.0.0).
+# [*port*]: tftp service bind port (default 69).
+# [*options*]: tftp service bind port (default 69).
+# [*inetd*]: tftp service bind port (default 69).
+# [*inetd_conf*]: tftp service bind port (default 69).
+#
# Actions:
#
# Requires:
#
+# puppetlabs-inetd when inetd = true.
+#
# Usage:
#
+# class tftp {
+# directory => '/opt/tftp',
+# address => $::ipaddress,
+# options => '--ipv6 --timeout 60',
+# }
+#
class tftp (
- $username = $tftp::params::username,
- $directory = $tftp::params::directory,
- $address = $tftp::params::address,
- $port = $tftp::params::port,
- $options = $tftp::params::options
+ $username = $tftp::params::username,
+ $directory = $tftp::params::directory,
+ $address = $tftp::params::address,
+ $port = $tftp::params::port,
+ $options = $tftp::params::options,
+ $inetd = false,
+ $inetd_conf = $tftp::params::inetd_conf
) inherits tftp::params {
package { 'tftpd-hpa':
ensure => present,
@@ -28,8 +46,40 @@ class tftp (
require => Package['tftpd-hpa'],
}
+ if $inetd {
+ if $options != '--secure' {
+ fail('tftp class does not support custom options when inetd is enabled.')
+ }
+
+ include 'inetd'
+
+ augeas { 'inetd_tftp':
+ changes => [
+ "ins tftp after /files${inetd_conf}",
+ "set /files${inetd_conf}/tftp/socket dgram",
+ "set /files${inetd_conf}/tftp/protocol udp",
+ "set /files${inetd_conf}/tftp/wait wait",
+ "set /files${inetd_conf}/tftp/user ${username}",
+ "set /files${inetd_conf}/tftp/command /usr/libexec/tftpd",
+ "set /files${inetd_conf}/tftp/arguments/1 tftpd",
+ "set /files${inetd_conf}/tftp/arguments/2 --address",
+ "set /files${inetd_conf}/tftp/arguments/3 ${address}:${port}",
+ "set /files${inetd_conf}/tftp/arguments/4 --secure",
+ "set /files${inetd_conf}/tftp/arguments/5 ${directory}",
+ ],
+ require => Class['inetd'],
+ }
+
+ $svc_ensure = stopped
+ $svc_enable = false
+ } else {
+ $svc_ensure = running
+ $svc_enable = true
+ }
+
service { 'tftpd-hpa':
- ensure => running,
+ ensure => $svc_ensure,
+ enable => $svc_enable,
provider => $tftp::params::provider,
hasstatus => $tftp::params::hasstatus,
pattern => '/usr/sbin/in.tftpd',
diff --git a/manifests/params.pp b/manifests/params.pp
index b268114..564e0f2 100644
--- a/manifests/params.pp
+++ b/manifests/params.pp
@@ -9,10 +9,11 @@
# Usage:
#
class tftp::params {
- $address = '0.0.0.0'
- $port = '69'
- $username = 'tftp'
- $options = '--secure'
+ $address = '0.0.0.0'
+ $port = '69'
+ $username = 'tftp'
+ $options = '--secure'
+ $inetd_conf = '/etc/inetd.conf'
case $::operatingsystem {
'debian': {