aboutsummaryrefslogtreecommitdiff
path: root/manifests/gitolite.pp
blob: 9bdf0f1884c3eb9dc8cf79d94c6ad6ab8cb1a392 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# 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 }

  # make sure this is not installed
  package { "gitosis": ensure => purged }

  # 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"],
  }

  file { "/var/git/.gitolite.rc":
    ensure  => present,
    owner   => gitolite,
    group   => gitolite,
    mode    => 0644,
    source => "puppet:///modules/git/gitolite.rc",
    require => [ File['/var/git'], User['gitolite'] ],
  }

  file { "/var/git/projects.list":
    ensure  => present,
    owner   => gitolite,
    group   => gitolite,
    mode    => 0644,
    require => [ File['/var/git'], 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'],
  }
}