class git::daemon ( $implementation = lookup('git::daemon::implementation', undef, undef, 'gitolite'), $inetd = lookup('git::daemon::inetd', undef, undef, true), $groups = lookup('git::daemon::groups', undef, undef, [ 'puppet' ]), ) { # directory for git user and repositories file { "/var/git": ensure => directory, mode => '0755', owner => git, group => git, } # repositories folder file { "/var/git/repositories": ensure => directory, owner => git, group => git, mode => '0755', recurse => false, } # symbolic link file { "/var/cache/git": ensure => "/var/git/repositories", force => true, backup => false, require => File['/var/git/repositories'], } # ensures that the group exists group { "git": ensure => present, allowdupe => false, require => Package["gitolite"], } # alters the user's home dir # set '*' on password field to avoid this issue: # https://stackoverflow.com/questions/15664561/ssh-key-asks-for-password/15761971#15761971 user { "git": allowdupe => false, comment => "git repository hosting,,,", ensure => present, home => "/var/git", shell => "/bin/sh", gid => "git", password => '*', groups => $groups, require => Group["git"], } # 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'], } # default implementation include git::gitolite # include inetd if needed if ($inetd == true) { include inetd # git-daemon config in inetd file_line { "git-daemon-inetd": path => "/etc/inetd.conf", line => "git stream tcp nowait git /usr/bin/git git daemon --inetd --verbose --base-path=/var/git/repositories /var/git/repositories", ensure => present, notify => Service['inetd'], } } # See http://bastian.rieck.ru/blog/posts/2013/gitweb_readme_workflow/ # https://stackoverflow.com/questions/8321649/gitweb-how-to-display-markdown-file-in-html-format-automatically-like-github package { 'markdown': ensure => present, } }