From a7f62be70813352fcb53c011e8e4033d7813c4be Mon Sep 17 00:00:00 2001 From: Ossi Salmi Date: Mon, 31 Mar 2014 14:51:00 +0300 Subject: [PATCH] util: Add user and group parameters for util::extract::tar --- util/manifests/init.pp | 72 +++++++++++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 15 deletions(-) diff --git a/util/manifests/init.pp b/util/manifests/init.pp index aaed088..0881285 100644 --- a/util/manifests/init.pp +++ b/util/manifests/init.pp @@ -4,13 +4,17 @@ # # $name: # Destination directory. +# # $ensure: # If 'latest', remove target and re-extract when source file changes. +# # $source: # File to extract. +# # $strip: # Remove the specified number of leading path elements. # Defaults to 0. +# # $preserve: # Preserve owner and permissions. Defaults to false. # @@ -18,16 +22,45 @@ # The pathnames or shell-style globbing patterns indicate which # items in the archive should be processed. # +# $user: +# User to extract the files as. +# +# $group: +# Group to extract the files as. +# # === Sample usage # -#util::extract::tar { "/usr/local/src/moin-1.8.8": -# strip => 1, -# source => "/usr/local/src/moin-1.8.8.tar.gz", -#} +# util::extract::tar { "/usr/local/src/moin-1.8.8": +# strip => 1, +# 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 { latest: { @@ -39,22 +72,29 @@ define util::extract::tar($source, $ensure=present, $strip=0, $preserve=false, $ refreshonly => true, } } + default: { } } file { $name: ensure => directory, mode => "0755", - owner => "root", - group => $::operatingsystem ? { - "openbsd" => "wheel", - default => "root", - }, + owner => $user, + group => $group, } case regsubst($source, '.*\.([^.]+)$', '\1') { - tar: { $cat = "cat" } - gz,tgz: { $cat = "zcat" } - bz2, tbz: { $cat = "bzcat" } + "tar": { + $cat = "cat" + } + "gz","tgz": { + $cat = "zcat" + } + "bz2","tbz": { + $cat = "bzcat" + } + default: { + fail("unknown file type") + } } $tar = $::operatingsystem ? { @@ -71,8 +111,10 @@ define util::extract::tar($source, $ensure=present, $strip=0, $preserve=false, $ exec { "tar-extract-${name}": path => "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin", command => $command, - require => [ File[$name], Package["tar"], ], unless => "test -n \"$(ls -A ${name})\"", + user => $user, + group => $group, + require => File[$name], } }