]> gitweb.fluxo.info Git - puppet-git.git/commitdiff
Initial gitolite support
authorSilvio Rhatto <rhatto@riseup.net>
Mon, 3 Dec 2012 20:07:10 +0000 (18:07 -0200)
committerSilvio Rhatto <rhatto@riseup.net>
Mon, 3 Dec 2012 20:07:10 +0000 (18:07 -0200)
manifests/gitolite.pp [new file with mode: 0644]
manifests/init.pp

diff --git a/manifests/gitolite.pp b/manifests/gitolite.pp
new file mode 100644 (file)
index 0000000..4dddd2b
--- /dev/null
@@ -0,0 +1,87 @@
+# This class handles a gitolite installation, with /var/git as the root for
+# git repositories.
+
+class gitolite inherits git {
+  # directory for gitolite user and repositories
+  file { "/var/git":
+    ensure => directory,
+    mode   => 0755,
+    owner  => gitolite,
+    group  => gitolite,
+  }
+
+  # repositories folder
+  file { "/var/git/repositories":
+    ensure  => directory,
+    owner   => gitolite,
+    group   => gitolite,
+    mode    => 0755,
+    recurse => false,
+  }
+
+  # symbolic link
+  file { "/var/cache/git":
+    ensure  => "/var/git/repositories",
+    force   => true,
+    backup  => false,
+    require => File['/var/git/repositories'],
+  }
+
+  # the needed packages
+  package { "gitolite": ensure => installed }
+
+  # ensures that the group exists
+  group { "gitolite":
+    ensure    => present,
+    allowdupe => false,
+    require   => Package["gitolite"],
+  }
+
+  # alters the user's home dir
+  user { "gitolite":
+    allowdupe => false,
+    comment   => "git repository hosting,,,",
+    ensure    => present,
+    home      => "/var/git",
+    shell     => "/bin/sh",
+    gid       => "gitolite",
+    groups    => [ "puppet" ],
+    require   => Group["gitolite"],
+  }
+
+  # tries to get rid of ugly directory structure
+  file { "/srv/gitolite":
+    ensure  => absent,
+    force   => true,
+    backup => false,
+    require => User["gitolite"],
+  }
+
+  # we also don't need /var/gitolite
+  file { "/var/lib/gitolite":
+    ensure  => absent,
+    force   => true,
+    backup => false,
+    require => User["gitolite"],
+  }
+
+  # mass update script
+  file { "/usr/local/sbin/git-mass-update-server-info":
+    ensure => present,
+    owner  => root,
+    group  => root,
+    mode   => 0755,
+    source => "puppet:///modules/git/git-mass-update-server-info",
+  }
+
+  # mass update hourly
+  cron { "/usr/local/sbin/git-mass-update-server-info":
+    command  => "/usr/local/sbin/git-mass-update-server-info &> /dev/null",
+    user     => root,
+    hour     => "*/1",
+    minute   => "20",
+    ensure   => present,
+    require  => File['/usr/local/sbin/git-mass-update-server-info'],
+  }
+}
+
index 8a7b270275cc6451afb32577415b9977917a4427..9e1a5f646e34552bd648a1534085c1ff431ee28e 100644 (file)
@@ -4,3 +4,4 @@ import "git.pp"
 import "gitosis.pp"
 import "gitweb.pp"
 import "git-daemon.pp"
+import "gitolite.pp"