From d0f8559baf5bdcaab9f04aaeb2d945efdadb94e5 Mon Sep 17 00:00:00 2001 From: Colin Guthrie Date: Tue, 20 Aug 2013 21:42:52 +0000 Subject: mgagit: Add repo templates to puppet rather than reply on packaged versions This adds the repo template into puppet as this seems a more appropriate place to track what is effectively configuration. I also use this opportunity to add a repository configuration repo for 'web' and add a new repo template for it accordingly. --- deployment/mgagit/manifests/init.pp | 41 +++++++++++++++++++++++++ deployment/mgagit/templates/group_owned_repo.gl | 28 +++++++++++++++++ deployment/mgagit/templates/mgagit.conf | 9 +++++- deployment/mgagit/templates/repodef_repo.gl | 7 +++++ 4 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 deployment/mgagit/templates/group_owned_repo.gl create mode 100644 deployment/mgagit/templates/repodef_repo.gl diff --git a/deployment/mgagit/manifests/init.pp b/deployment/mgagit/manifests/init.pp index 249cb155..f2002d94 100644 --- a/deployment/mgagit/manifests/init.pp +++ b/deployment/mgagit/manifests/init.pp @@ -9,6 +9,7 @@ class mgagit( $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_conf = "${gitolite_confdir}/gitolite.conf" $gitoliterc = "$git_homedir/.gitolite.rc" @@ -40,6 +41,46 @@ class mgagit( require => Package['mgagit'], } + 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'), + } + + $repogroup = 'packagers' + $repoml = 'soft' + file { "$gitolite_tmpldir/soft_repo.gl": + ensure => present, + owner => root, + group => root, + mode => '0644', + content => template('mgagit/group_owned_repo.gl'), + } + + $repogroup = 'web' + $repoml = 'atelier' + file { "$gitolite_tmpldir/web_repo.gl": + ensure => present, + owner => root, + group => root, + mode => '0644', + content => template('mgagit/group_owned_repo.gl'), + } + file { [$gitolite_dir, $gitolite_keydir, $gitolite_confdir, $reposconf_dir, $vhostdir]: ensure => directory, diff --git a/deployment/mgagit/templates/group_owned_repo.gl b/deployment/mgagit/templates/group_owned_repo.gl new file mode 100644 index 00000000..0e5ae7c1 --- /dev/null +++ b/deployment/mgagit/templates/group_owned_repo.gl @@ -0,0 +1,28 @@ +[% SET maintainer = r.repos.$repo.maintainer %] +repo [% repo %] + RW master$ = [% maintainer %] + RW distro/ = [% maintainer %] + RW topic/ = [% maintainer %] + RW refs/tags/ = [% maintainer %] +[% IF r.repos.$repo.lockdown != 'yes' -%] + RW master$ = @mga-<%= @repogroup %> + RW distro/ = @mga-<%= @repogroup %> + RW topic/ = @mga-<%= @repogroup %> + RW refs/tags/ = @mga-<%= @repogroup %> +[% END -%] + RW+ user/USER/ = @all + R = @all +[% IF r.repos.$repo.noemail -%] + config hooks.mailinglist = "" +[% ELSE -%] +[% IF r.repos.$repo.mailinglist -%] + config hooks.mailinglist = "[% r.repos.$repo.mailinglist %]" +[% ELSE -%] + config hooks.mailinglist = "<%= @repoml %>-commits@ml.mageia.org" +[% END -%] +[% END -%] + config hooks.emailprefix = "[% repo %] " + config gitweb.description = "[% r.repos.$repo.description %]" +[% IF r.users.$maintainer -%] + config gitweb.owner = "[% r.users.$maintainer.cn.0 %] [[% maintainer %]]" +[% END -%] diff --git a/deployment/mgagit/templates/mgagit.conf b/deployment/mgagit/templates/mgagit.conf index a818c93a..783f6fea 100644 --- a/deployment/mgagit/templates/mgagit.conf +++ b/deployment/mgagit/templates/mgagit.conf @@ -4,6 +4,7 @@ ldapserver: <%= @ldap_server %> binddn: <%= @binddn %> bindpwfile: <%= @bindpwfile %> pubkey_dir: <%= @gitolite_keydir %> +tmpl_dir: <%= @gitolite_tmpldir %> gitolite_config: <%= @gitolite_conf %> run_gitolite: yes repodef_dir: <%= @reposconf_dir %> @@ -13,8 +14,14 @@ repos_config: repos: - name: software maintainer: '@mga-sysadmin' - description: Software repositories definitions + description: Software repository definitions + - name: web + maintainer: '@mga-sysadmin' + description: Website repository definitions - prefix: software gl_template: soft_repo git_url: file:///git/infrastructure/repositories/software.git + - prefix: web + gl_template: web_repo + git_url: file:///git/infrastructure/repositories/web.git www_dir: <%= @vhostdir %> diff --git a/deployment/mgagit/templates/repodef_repo.gl b/deployment/mgagit/templates/repodef_repo.gl new file mode 100644 index 00000000..399abda5 --- /dev/null +++ b/deployment/mgagit/templates/repodef_repo.gl @@ -0,0 +1,7 @@ +repo [% repo %] + RW master$ = [% r.repos.$repo.maintainer %] + RW+ user/USER/ = @all + R = @all + config hooks.mailinglist = sysadmin-commits@ml.mageia.org + config hooks.emailprefix = [% repo %] + config gitweb.description = [% r.repos.$repo.description %] -- cgit v1.2.1