util: Add user and group parameters for util::extract::tar
This commit is contained in:
parent
b3a71f0cdd
commit
a7f62be708
1 changed files with 57 additions and 15 deletions
|
@ -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],
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue