--- /dev/null
+# The define resource extracts compressed file to a staging location.
+define staging::deploy (
+ $source, #: the source file location, supports local files, puppet://, http://, https://, ftp://
+ $target, #: the target extraction directory
+ $staging_path = undef, #: the staging location for compressed file. defaults to ${staging::path}/${caller_module_name}
+ $username = undef, #: https or ftp username
+ $certificate = undef, #: https certifcate file
+ $password = undef, #: https or ftp user password or https certificate password
+ $environment = undef, #: environment variable for settings such as http_proxy
+ $timeout = undef, #: the time to wait for the file transfer to complete
+ $user = undef, #: extract file as this user
+ $group = undef, #: extract group as this group
+ $creates = undef, #: the file/folder created after extraction. if unspecified defaults to ${target}/${name}
+ $unless = undef, #: alternative way to conditionally extract file
+ $onlyif = undef #: alternative way to conditionally extract file
+) {
+
+ staging::file { $name:
+ source => $source,
+ target => $staging_path,
+ username => $username,
+ certificate => $certificate,
+ password => $password,
+ environment => $environment,
+ subdir => $caller_module_name,
+ timeout => $timeout,
+ }
+
+ staging::extract { $name:
+ target => $target,
+ source => $staging_path,
+ user => $user,
+ group => $group,
+ environment => $environment,
+ subdir => $caller_module_name,
+ creates => $creates,
+ unless => $unless,
+ onlyif => $onlyif,
+ require => Staging::File[$name],
+ }
+
+}