class git::daemon ( $implementation = hiera('git::daemon::implementation', 'gitolite') ) { # directory for gitosis 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 => [ "puppet" ], 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'], } case $implementation { 'gitosis': { include git::gitosis } default: { include git::gitolite } } # the needed packages and services include inetd # git-daemon config in inetd line { "git-daemon-inetd": file => "/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, } }