diff options
author | Brenton Leanhardt <bleanhar@redhat.com> | 2008-07-09 10:25:27 -0400 |
---|---|---|
committer | Brenton Leanhardt <bleanhar@redhat.com> | 2008-07-09 10:36:32 -0400 |
commit | ecd43460738266b95fefdf84a4fb87d3d01eaf40 (patch) | |
tree | c9bc953b3fa58df59f6ffb21149b9476773df88e /genome-repo | |
parent | 0cbd015aec07e51994f6e4e6de0cccde1b5ccb9d (diff) | |
download | tools-ecd43460738266b95fefdf84a4fb87d3d01eaf40.tar.gz tools-ecd43460738266b95fefdf84a4fb87d3d01eaf40.tar.xz tools-ecd43460738266b95fefdf84a4fb87d3d01eaf40.zip |
The genomerepo::appliance puppet class now handles laying down the puppet hooks
Fixes: https://engineering.redhat.com/trac/IT_Architecture/ticket/191
Previously this was done with genome-sync. That was a hack that only worked
for puppet modules that were being sync'd. If someone manually created a
puppet module under /pub/git/puppet/ the hook would not get laid down.
The current limitation of this solution is that it does not allow users to
easily customize their post-receive hooks. They could edit
/etc/genome/post-receive.template but that's would not allow for fine grained
customization. We'll cross that bridge when we get there.
Diffstat (limited to 'genome-repo')
-rwxr-xr-x | genome-repo/genome-repo-1.0.0/genome_module/files/post-receive.template | 22 | ||||
-rw-r--r-- | genome-repo/genome-repo-1.0.0/genome_module/manifests/init.pp | 24 | ||||
-rw-r--r-- | genome-repo/genome-repo.spec | 2 |
3 files changed, 46 insertions, 2 deletions
diff --git a/genome-repo/genome-repo-1.0.0/genome_module/files/post-receive.template b/genome-repo/genome-repo-1.0.0/genome_module/files/post-receive.template new file mode 100755 index 0000000..a7d9beb --- /dev/null +++ b/genome-repo/genome-repo-1.0.0/genome_module/files/post-receive.template @@ -0,0 +1,22 @@ +#!/bin/sh +# +# This file is laid down by puppet as part of the genomerepo::appliance class +# that ships with the genome-repo RPM. + +update_working_dir() { + GIT_DIR=`pwd` + GIT_WORK_TREE="/etc/puppet/modules/main/`/bin/basename $GIT_DIR`" + + pushd $GIT_WORK_TREE + git --git-dir=$GIT_DIR reset --hard $1 + echo "$GIT_WORK_TREE updated." + popd +} + +while read oldrev newrev ref; do + # We only care when master gets updated + if [[ $ref == 'refs/heads/master' ]] + then + update_working_dir $newrev + fi +done diff --git a/genome-repo/genome-repo-1.0.0/genome_module/manifests/init.pp b/genome-repo/genome-repo-1.0.0/genome_module/manifests/init.pp index a4bb0d5..c7fdaab 100644 --- a/genome-repo/genome-repo-1.0.0/genome_module/manifests/init.pp +++ b/genome-repo/genome-repo-1.0.0/genome_module/manifests/init.pp @@ -36,6 +36,12 @@ class genomerepo { owner => $user, group => $user, } + + file { "/pub/git/puppet": + ensure => directory, + owner => $user, + group => $user, + } } class xinetd inherits base { @@ -121,7 +127,6 @@ class genomerepo { ensure => installed, } - service { "puppet": ensure => running, enable => true, @@ -287,6 +292,23 @@ class genomerepo { require => User["$user"], } + file { "/etc/genome/post-receive.template": + ensure => present, + owner => "root", + group => "root", + mode => 0744, + source => "puppet:///genomerepo/post-receive.template", + require => User[$user], + } + + exec { "Setup post-recieve hooks for puppet modules": + user => $user, + group => $user, + path => "/usr/bin:/bin", + command => "find /pub/git/puppet -name hooks -type d -exec cp /etc/genome/post-receive.template '{}'/post-receive \;", + require => [User[$user], File["/etc/genome"], File["/pub/git/puppet"], File["/etc/genome/post-receive.template"]], + } + # Technically the erb files require the cgi # Consider fixing that. genome::cgi::file { "puppetca.cgi": } diff --git a/genome-repo/genome-repo.spec b/genome-repo/genome-repo.spec index 3a7a481..6f92f82 100644 --- a/genome-repo/genome-repo.spec +++ b/genome-repo/genome-repo.spec @@ -1,6 +1,6 @@ Name: genome-repo Version: 1.0.0 -Release: 27%{?dist} +Release: 30%{?dist} Summary: Genome repository Group: Applications/System |