aboutsummaryrefslogtreecommitdiffstats
path: root/deployment/mgagit/manifests/init.pp
blob: 42753b030107e04df97625640ed4b8997f5c5b23 (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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
class mgagit(
  $git_dir = '/git',
  $ldap_server = "ldap.${::domain}",
  $binddn = 'uid=mgagit,ou=People,dc=mageia,dc=org',
  $vhost = "projects.${::domain}",
  $bindpw
){
  $git_login = 'git'
  $git_homedir = "/var/lib/${git_login}"
  $gitolite_dir = "${git_homedir}/.gitolite"
  $gitolite_keydir = "${gitolite_dir}/keydir"
  $gitolite_tmpldir = '/etc/mgagit/tmpl'
  $gitolite_confdir = "${gitolite_dir}/conf"
  $gitolite_hooksdir = "${gitolite_dir}/hooks"
  $gitolite_commonhooksdir = "${gitolite_hooksdir}/common"
  $gitolite_conf = "${gitolite_confdir}/gitolite.conf"
  $gitoliterc = "${git_homedir}/.gitolite.rc"
  $bindpwfile = '/etc/mgagit.secret'
  $reposconf_dir = "${git_homedir}/repos-config"
  $vhostdir = "${git_homedir}/www"

  package { ['mgagit', 'gitolite', 'python3-bugz']:
    ensure => installed,
  }

  group { $git_login:
    ensure => present,
  }

  user { $git_login:
    ensure      => present,
    home        => $git_homedir,
    managehome  => true,
    gid         => $git_login,
  }

  file { '/etc/mgagit.conf':
    ensure  => present,
    owner   => root,
    group   => root,
    mode    => '0644',
    content => template('mgagit/mgagit.conf'),
    require => Package['mgagit'],
  }

  file { "${gitolite_commonhooksdir}/git_multimail.py":
    ensure  => present,
    owner   => $git_login,
    group   => $git_login,
    mode    => '0644',
    source  => 'puppet:///modules/mgagit/git_multimail.py',
    require => File[$gitolite_commonhooksdir],
  }

  file { "${gitolite_commonhooksdir}/post-receive":
    ensure  => present,
    owner   => $git_login,
    group   => $git_login,
    mode    => '0755',
    content => template('mgagit/git-post-receive-hook'),
    require => File[$gitolite_commonhooksdir],
  }

  file { "${gitolite_commonhooksdir}/post-update":
    ensure  => present,
    owner   => $git_login,
    group   => $git_login,
    mode    => '0755',
    content => template('mgagit/git-post-update-hook'),
    require => File[$gitolite_commonhooksdir],
  }

  file { $gitolite_tmpldir:
    ensure  => directory,
    owner   => root,
    group   => root,
    mode    => '0755',
  }

  file { "${gitolite_tmpldir}/group.gl":
    ensure => 'link',
    target => '/usr/share/mgagit/tmpl/group.gl',
  }

  file { "${gitolite_tmpldir}/repodef_repo.gl":
    ensure  => present,
    owner   => root,
    group   => root,
    mode    => '0644',
    content => template('mgagit/repodef_repo.gl'),
  }

  mgagit::tmpl { 'artwork':
    tmpldir => $gitolite_tmpldir,
    ml      => 'atelier',
  }

  mgagit::tmpl { 'doc':
    tmpldir => $gitolite_tmpldir,
    ml      => 'atelier', # NB This is wrong, we should have a doc-commits@ ML (and thus remove this line)
  }

  mgagit::tmpl { 'infrastructure':
    tmpldir => $gitolite_tmpldir,
    group   => 'sysadmin',
    ml      => 'sysadmin',
  }

  mgagit::tmpl { 'org':
    tmpldir => $gitolite_tmpldir,
    group   => 'board',
    ml      => 'board',
  }

  mgagit::tmpl { 'qa':
    tmpldir => $gitolite_tmpldir,
  }

  mgagit::tmpl { 'soft':
    tmpldir => $gitolite_tmpldir,
    group   => 'packagers-committers',
  }

  mgagit::tmpl { 'web':
    tmpldir => $gitolite_tmpldir,
    ml      => 'atelier',
  }

  file { [$gitolite_dir, $gitolite_keydir, $gitolite_confdir,
          $gitolite_hooksdir, $gitolite_commonhooksdir,
          $reposconf_dir, $vhostdir]:
    ensure => directory,
    owner  => $git_login,
    group  => $git_login,
    mode   => '0755',
  }

  file { $gitoliterc:
    ensure  => present,
    owner   => $git_login,
    group   => $git_login,
    mode    => '0644',
    content => template('mgagit/gitolite.rc'),
  }

  file { $bindpwfile:
    ensure  => present,
    owner   => $git_login,
    group   => $git_login,
    mode    => '0600',
    content => inline_template('<%= @bindpw %>'),
  }

  file { $git_dir:
    ensure => directory,
    owner  => $git_login,
    group  => $git_login,
    mode   => '0755',
  }

  file { "${git_homedir}/repositories":
    ensure => 'link',
    target => $git_dir,
  }

  apache::vhost::base { $vhost:
    location => $vhostdir,
  }
}
# vim: sw=2