fuel-library/deployment/puppet/rsync/manifests/server.pp
Eugene Kirpichov 560671b4eb Initial commit
2012-09-07 17:38:58 -07:00

60 lines
1.6 KiB
Puppet

# Class: rsync::server
#
# The rsync server. Supports both standard rsync as well as rsync over ssh
#
# Requires:
# class xinetd if use_xinetd is set to true
# class rsync
#
class rsync::server(
$use_xinetd = true,
$address = '0.0.0.0',
$motd_file = 'UNSET',
$use_chroot = 'yes'
) inherits rsync {
$rsync_fragments = '/etc/rsync.d'
if($use_xinetd) {
include xinetd
xinetd::service { 'rsync':
bind => $address,
port => '873',
server => '/usr/bin/rsync',
server_args => '--daemon --config /etc/rsync.conf',
require => Package['rsync'],
}
} else {
service { 'rsync':
ensure => running,
enable => true,
subscribe => Exec['compile fragments'],
}
}
if $motd_file != 'UNSET' {
file { '/etc/rsync-motd':
source => 'puppet:///modules/rsync/motd',
}
}
file { $rsync_fragments:
ensure => directory,
}
file { "${rsync_fragments}/header":
content => template('rsync/header.erb'),
}
# perhaps this should be a script
# this allows you to only have a header and no fragments, which happens
# by default if you have an rsync::server but not an rsync::repo on a host
# which happens with cobbler systems by default
exec { 'compile fragments':
refreshonly => true,
command => "ls ${rsync_fragments}/frag-* 1>/dev/null 2>/dev/null && if [ $? -eq 0 ]; then cat ${rsync_fragments}/header ${rsync_fragments}/frag-* > /etc/rsync.conf; else cat ${rsync_fragments}/header > /etc/rsync.conf; fi; $(exit 0)",
subscribe => File["${rsync_fragments}/header"],
path => '/bin:/usr/bin',
}
}