util: Add user and group parameters for util::extract::tar

This commit is contained in:
Ossi Salmi 2014-03-31 14:51:00 +03:00
parent b3a71f0cdd
commit a7f62be708

View file

@ -4,13 +4,17 @@
# #
# $name: # $name:
# Destination directory. # Destination directory.
#
# $ensure: # $ensure:
# If 'latest', remove target and re-extract when source file changes. # If 'latest', remove target and re-extract when source file changes.
#
# $source: # $source:
# File to extract. # File to extract.
#
# $strip: # $strip:
# Remove the specified number of leading path elements. # Remove the specified number of leading path elements.
# Defaults to 0. # Defaults to 0.
#
# $preserve: # $preserve:
# Preserve owner and permissions. Defaults to false. # Preserve owner and permissions. Defaults to false.
# #
@ -18,16 +22,45 @@
# The pathnames or shell-style globbing patterns indicate which # The pathnames or shell-style globbing patterns indicate which
# items in the archive should be processed. # items in the archive should be processed.
# #
# $user:
# User to extract the files as.
#
# $group:
# Group to extract the files as.
#
# === Sample usage # === Sample usage
# #
#util::extract::tar { "/usr/local/src/moin-1.8.8": # util::extract::tar { "/usr/local/src/moin-1.8.8":
# strip => 1, # strip => 1,
# source => "/usr/local/src/moin-1.8.8.tar.gz", # source => "/usr/local/src/moin-1.8.8.tar.gz",
#} # }
# #
define util::extract::tar($source, $ensure=present, $strip=0, $preserve=false, $pattern="") { define util::extract::tar(
$source,
$ensure=present,
$strip=0,
$preserve=false,
$pattern="",
$user=undef,
$group=undef
) {
include gnu::tar if $user {
$user_real = $user
} else {
$user_real = "root"
}
if $group {
$group_real = $group
} else {
$group_real = $::operatingsystem ? {
"openbsd" => "wheel",
default => "root",
}
}
require gnu::tar
case $ensure { case $ensure {
latest: { latest: {
@ -39,22 +72,29 @@ define util::extract::tar($source, $ensure=present, $strip=0, $preserve=false, $
refreshonly => true, refreshonly => true,
} }
} }
default: { }
} }
file { $name: file { $name:
ensure => directory, ensure => directory,
mode => "0755", mode => "0755",
owner => "root", owner => $user,
group => $::operatingsystem ? { group => $group,
"openbsd" => "wheel",
default => "root",
},
} }
case regsubst($source, '.*\.([^.]+)$', '\1') { case regsubst($source, '.*\.([^.]+)$', '\1') {
tar: { $cat = "cat" } "tar": {
gz,tgz: { $cat = "zcat" } $cat = "cat"
bz2, tbz: { $cat = "bzcat" } }
"gz","tgz": {
$cat = "zcat"
}
"bz2","tbz": {
$cat = "bzcat"
}
default: {
fail("unknown file type")
}
} }
$tar = $::operatingsystem ? { $tar = $::operatingsystem ? {
@ -71,8 +111,10 @@ define util::extract::tar($source, $ensure=present, $strip=0, $preserve=false, $
exec { "tar-extract-${name}": exec { "tar-extract-${name}":
path => "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin", path => "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin",
command => $command, command => $command,
require => [ File[$name], Package["tar"], ],
unless => "test -n \"$(ls -A ${name})\"", unless => "test -n \"$(ls -A ${name})\"",
user => $user,
group => $group,
require => File[$name],
} }
} }