a11e8ffd2d
v0.3.0 sha1: d0707c4ae3674b63c2193c0012ceb9fa90ed41b6 Repo link: https://github.com/puppetlabs/puppetlabs-rsync Implements: blueprint merge-openstack-puppet-modules Change-Id: I873975f11ad5d839c5a52c2c3301b1f63fe92f5f
77 lines
1.8 KiB
Puppet
77 lines
1.8 KiB
Puppet
# Definition: rsync::put
|
|
#
|
|
# put files via rsync
|
|
#
|
|
# Parameters:
|
|
# $source - source to copy from
|
|
# $path - path to copy to, defaults to $name
|
|
# $user - username on remote system
|
|
# $purge - if set, rsync will use '--delete'
|
|
# $exlude - string to be excluded
|
|
# $keyfile - path to ssh key used to connect to remote host, defaults to /home/${user}/.ssh/id_rsa
|
|
# $timeout - timeout in seconds, defaults to 900
|
|
#
|
|
# Actions:
|
|
# put files via rsync
|
|
#
|
|
# Requires:
|
|
# $source must be set
|
|
#
|
|
# Sample Usage:
|
|
#
|
|
# rsync::put { '${rsyncDestHost}:/repo/foo':
|
|
# user => 'user',
|
|
# source => "/repo/foo/",
|
|
# } # rsync
|
|
#
|
|
define rsync::put (
|
|
$source,
|
|
$path = undef,
|
|
$user = undef,
|
|
$purge = undef,
|
|
$exclude = undef,
|
|
$keyfile = undef,
|
|
$timeout = '900'
|
|
) {
|
|
|
|
if $keyfile {
|
|
$Mykeyfile = $keyfile
|
|
} else {
|
|
$Mykeyfile = "/home/${user}/.ssh/id_rsa"
|
|
}
|
|
|
|
if $user {
|
|
$MyUserOpt = "-e 'ssh -i ${Mykeyfile} -l ${user}' "
|
|
$MyUser = "${user}@"
|
|
}
|
|
|
|
if $purge {
|
|
$MyPurge = '--delete'
|
|
}
|
|
|
|
if $exclude {
|
|
$MyExclude = "--exclude=${exclude}"
|
|
}
|
|
|
|
if $path {
|
|
$MyPath = $path
|
|
} else {
|
|
$MyPath = $name
|
|
}
|
|
|
|
$rsync_options = "-a ${MyPurge} ${MyExclude} ${MyUserOpt}${source} ${MyUser}${MyPath}"
|
|
|
|
exec { "rsync ${name}":
|
|
command => "rsync -q ${rsync_options}",
|
|
path => [ '/bin', '/usr/bin' ],
|
|
# perform a dry-run to determine if anything needs to be updated
|
|
# this ensures that we only actually create a Puppet event if something needs to
|
|
# be updated
|
|
# TODO - it may make senes to do an actual run here (instead of a dry run)
|
|
# and relace the command with an echo statement or something to ensure
|
|
# that we only actually run rsync once
|
|
onlyif => "test `rsync --dry-run --itemize-changes ${rsync_options} | wc -l` -gt 0",
|
|
timeout => $timeout,
|
|
}
|
|
}
|