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