]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - modules/rsync/manifests/site.pp
try an rsync class
[dsa-puppet.git] / modules / rsync / manifests / site.pp
diff --git a/modules/rsync/manifests/site.pp b/modules/rsync/manifests/site.pp
new file mode 100644 (file)
index 0000000..13d90dc
--- /dev/null
@@ -0,0 +1,47 @@
+define rsync::site (
+       $bind='',
+       $source='',
+       $content='',
+       $fname='/etc/rsyncd.conf',
+       $max_clients=200,
+       $ensure=present
+){
+
+       include rsync
+
+       case $ensure {
+               present,absent: {}
+               default: { fail ( "Invald ensure `${ensure}' for ${name}" ) }
+       }
+
+       if ($source and $content) {
+               fail ( "Can't define both source and content for ${name}" )
+       }
+
+       if $source {
+               file { $fname:
+                       ensure => $ensure,
+                       source => $source
+               }
+       } elsif $content {
+               file { $fname:
+                       ensure  => $ensure,
+                       content => $content,
+               }
+       } else {
+               fail ( "Can't find config for ${name}" )
+       }
+
+       xinetd::service { "rsync-${name}":
+               bind        => $bind,
+               id          => "${name}-rsync",
+               server      => '/usr/sbin/rsyncd',
+               port        => 'rsync',
+               server_args => $fname,
+               ferm        => false,
+               instances   => $max_clients,
+               require     => File[$fname]
+       }
+
+       Service['rsync']->Service['xinetd']
+}