class utils::wget { define remote_file($remote_location=undef, $mode='0644', $service=undef, $md5=undef){ exec{ "retrieve_${title}": unless => "/usr/bin/md5sum ${title} |/usr/bin/grep -w ${md5}", command => "/usr/bin/curl -s ${remote_location} --create-dirs -o /tmp${title} && /usr/bin/md5sum /tmp${title} |/usr/bin/grep -w ${md5} && /usr/bin/mv -f ${title} /tmp && /usr/bin/mv -f /tmp${title} ${title} || exit 1", #creates => $title, } file{$title: mode => $mode, require => Exec["retrieve_${title}"], notify => Service["$service"] } } }