summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorR.I.Pienaar <rip@devco.net>2011-08-03 06:44:57 -0700
committerR.I.Pienaar <rip@devco.net>2011-08-03 06:44:57 -0700
commit0cd6bacfc92e581a988c2c82cc23472dff63a8b0 (patch)
tree19c3cdc42964dbb3c06edb8e99b607abdbf86ef3
parent4a08cd40b5cace62afa1070311245e2379789cb8 (diff)
parent185adddae8cbba57891167cef05b94a8b3e25171 (diff)
downloadpuppet-concat-0cd6bacfc92e581a988c2c82cc23472dff63a8b0.tar.gz
puppet-concat-0cd6bacfc92e581a988c2c82cc23472dff63a8b0.tar.bz2
Merge pull request #8 from duritong/master
use client's vardir - make module usable for unprivileged users
-rw-r--r--lib/facter/concat_basedir.rb5
-rw-r--r--manifests/fragment.pp2
-rw-r--r--manifests/init.pp24
-rw-r--r--manifests/setup.pp15
4 files changed, 29 insertions, 17 deletions
diff --git a/lib/facter/concat_basedir.rb b/lib/facter/concat_basedir.rb
new file mode 100644
index 0000000..02e9c5b
--- /dev/null
+++ b/lib/facter/concat_basedir.rb
@@ -0,0 +1,5 @@
+Facter.add("concat_basedir") do
+ setcode do
+ File.join(Puppet[:vardir],"concat")
+ end
+end
diff --git a/manifests/fragment.pp b/manifests/fragment.pp
index 7afc4c0..1fb4128 100644
--- a/manifests/fragment.pp
+++ b/manifests/fragment.pp
@@ -13,7 +13,7 @@
# - group Owner of the file
# - backup Controls the filebucketing behavior of the final file and
# see File type reference for its use. Defaults to 'puppet'
-define concat::fragment($target, $content='', $source='', $order=10, $ensure = "present", $mode = 0644, $owner = root, $group = $concat::setup::root_group, $backup = "puppet") {
+define concat::fragment($target, $content='', $source='', $order=10, $ensure = "present", $mode = 0644, $owner = $id, $group = $concat::setup::root_group, $backup = "puppet") {
$safe_name = regsubst($name, '/', '_', 'G')
$safe_target_name = regsubst($target, '/', '_', 'G')
$concatdir = $concat::setup::concatdir
diff --git a/manifests/init.pp b/manifests/init.pp
index 3a17346..19d91a1 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -44,9 +44,9 @@
#
# DETAIL:
# We use a helper shell script called concatfragments.sh that gets placed
-# in /usr/local/bin to do the concatenation. While this might seem more
-# complex than some of the one-liner alternatives you might find on the net
-# we do a lot of error checking and safety checks in the script to avoid
+# in <Puppet[:vardir]>/concat/bin to do the concatenation. While this might
+# seem more complex than some of the one-liner alternatives you might find on
+# the net we do a lot of error checking and safety checks in the script to avoid
# problems that might be caused by complex escaping errors etc.
#
# LICENSE:
@@ -87,7 +87,7 @@
# ALIASES:
# - The exec can notified using Exec["concat_/path/to/file"] or Exec["concat_/path/to/directory"]
# - The final file can be referened as File["/path/to/file"] or File["concat_/path/to/file"]
-define concat($mode = 0644, $owner = "root", $group = $concat::setup::root_group, $warn = "false", $force = "false", $backup = "puppet", $gnu = "true", $order="alpha") {
+define concat($mode = 0644, $owner = $id, $group = $concat::setup::root_group, $warn = "false", $force = "false", $backup = "puppet", $gnu = "true", $order="alpha") {
$safe_name = regsubst($name, '/', '_', 'G')
$concatdir = $concat::setup::concatdir
$version = $concat::setup::majorversion
@@ -126,7 +126,7 @@ define concat($mode = 0644, $owner = "root", $group = $concat::setup::root_group
}
File{
- owner => root,
+ owner => $id,
group => $group,
mode => $mode,
backup => $backup
@@ -164,13 +164,17 @@ define concat($mode = 0644, $owner = "root", $group = $concat::setup::root_group
}
exec{"concat_${name}":
- user => root,
- group => $group,
notify => File[$name],
subscribe => File[$fragdir],
alias => "concat_${fragdir}",
- require => [ File["/usr/local/bin/concatfragments.sh"], File[$fragdir], File["${fragdir}/fragments"], File["${fragdir}/fragments.concat"] ],
- unless => "/usr/local/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} -t ${warnflag} ${forceflag} ${orderflag} ${gnuflag}",
- command => "/usr/local/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} ${warnflag} ${forceflag} ${orderflag} ${gnuflag}",
+ require => [ File[$fragdir], File["${fragdir}/fragments"], File["${fragdir}/fragments.concat"] ],
+ unless => "${concat::setup::concatdir}/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} -t ${warnflag} ${forceflag} ${orderflag} ${gnuflag}",
+ command => "${concat::setup::concatdir}/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} ${warnflag} ${forceflag} ${orderflag} ${gnuflag}",
+ }
+ if $id == 'root' {
+ Exec["concat_${name}"]{
+ user => root,
+ group => $group,
+ }
}
}
diff --git a/manifests/setup.pp b/manifests/setup.pp
index fa8c7eb..53092ab 100644
--- a/manifests/setup.pp
+++ b/manifests/setup.pp
@@ -13,12 +13,15 @@
#
# It also copies out the concatfragments.sh file to /usr/local/bin
class concat::setup {
- $root_group = 0
- $concatdir = "/var/lib/puppet/concat"
+ $root_group = $id ? {
+ root => 0,
+ default => $id
+ }
+ $concatdir = $concat_basedir
$majorversion = regsubst($puppetversion, '^[0-9]+[.]([0-9]+)[.][0-9]+$', '\1')
- file{"/usr/local/bin/concatfragments.sh":
- owner => root,
+ file{"${concatdir}/bin/concatfragments.sh":
+ owner => $id,
group => $root_group,
mode => 755,
source => $majorversion ? {
@@ -26,9 +29,9 @@ class concat::setup {
default => "puppet:///modules/concat/concatfragments.sh"
};
- $concatdir:
+ [ $concatdir, "${concatdir}/bin" ]:
ensure => directory,
- owner => root,
+ owner => $id,
group => $root_group,
mode => '0750';
}