aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorNicolas Vigier <boklm@mageia.org>2011-08-16 23:08:44 +0000
committerNicolas Vigier <boklm@mageia.org>2011-08-16 23:08:44 +0000
commitdd69ebad205b4401341eed46c1813845b09b4b4e (patch)
tree3902fe0bed820b256b8a0844b37704cae833203a /modules
parent3e990eef5f02ba0c47226908bf33be3649f3eafe (diff)
downloadpuppet-dd69ebad205b4401341eed46c1813845b09b4b4e.tar
puppet-dd69ebad205b4401341eed46c1813845b09b4b4e.tar.gz
puppet-dd69ebad205b4401341eed46c1813845b09b4b4e.tar.bz2
puppet-dd69ebad205b4401341eed46c1813845b09b4b4e.tar.xz
puppet-dd69ebad205b4401341eed46c1813845b09b4b4e.zip
add wrapper script to binrepo upload script
Diffstat (limited to 'modules')
-rw-r--r--modules/buildsystem/manifests/init.pp18
-rw-r--r--modules/buildsystem/templates/sudoers.binrepo1
-rw-r--r--modules/buildsystem/templates/wrapper.upload-bin26
3 files changed, 44 insertions, 1 deletions
diff --git a/modules/buildsystem/manifests/init.pp b/modules/buildsystem/manifests/init.pp
index d517a664..956ede34 100644
--- a/modules/buildsystem/manifests/init.pp
+++ b/modules/buildsystem/manifests/init.pp
@@ -17,6 +17,7 @@ class buildsystem {
# FIXME: Test password. Real password should be in extdata.
$maintdb_key = 'm1g234'
$packagers_group = 'mga-packagers'
+ $packagers_committers_group = 'mga-packagers-committers'
$createsrpm_path = '/usr/share/repsys/create-srpm'
include ssh::auth
@@ -211,10 +212,13 @@ class buildsystem {
}
class binrepo {
+ include sudo
$binrepo_login = "binrepo"
$binrepo_homedir = "/var/lib/$binrepo_login"
$binrepodir = "$binrepo_homedir/data"
$uploadinfosdir = "$binrepo_homedir/infos"
+ $uploadbinpath = '/usr/local/bin/upload-bin'
+ $uploadbinpathwrapper = '/usr/local/bin/wrapper.upload-bin'
user {"$binrepo_login":
ensure => present,
@@ -238,13 +242,25 @@ class buildsystem {
mode => 755,
}
- file { '/usr/local/bin/upload-bin':
+ file { $uploadbinpath:
ensure => present,
owner => root,
group => root,
mode => 755,
content => template('buildsystem/upload-bin'),
}
+
+ file { $uploadbinpathwrapper:
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => 755,
+ content => template('buildsystem/wrapper.upload-bin'),
+ }
+
+ sudo::sudoers_config { "binrepo":
+ content => template("buildsystem/sudoers.binrepo")
+ }
}
class mgarepo {
diff --git a/modules/buildsystem/templates/sudoers.binrepo b/modules/buildsystem/templates/sudoers.binrepo
new file mode 100644
index 00000000..7a9efef4
--- /dev/null
+++ b/modules/buildsystem/templates/sudoers.binrepo
@@ -0,0 +1 @@
+%<%= packagers_committers_group %> ALL =(<%= binrepo_login %>) NOPASSWD: <%= uploadbinpath %>
diff --git a/modules/buildsystem/templates/wrapper.upload-bin b/modules/buildsystem/templates/wrapper.upload-bin
new file mode 100644
index 00000000..728eedc9
--- /dev/null
+++ b/modules/buildsystem/templates/wrapper.upload-bin
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+binrepouser="<%= binrepo_login %>"
+uploadbinpath="<%= uploadbinpath %>"
+packagerscommittersgroup="<%= packagers_committers_group %>"
+
+function isingroup()
+{
+ grp="$1"
+ for group in `groups`
+ do if [ "$grp" = "$group" ]
+ then
+ return 0
+ fi
+ done
+ return 1
+}
+
+if ! isingroup "$packagerscommittersgroup"
+then
+ echo "You are not in $packagerscommitersgroup group."
+ exit 1
+fi
+
+sudo -u "$binrepouser" "$uploadbinpath" $(whoami) $@
+