# This class handles a gitosis installation, with /var/git as the root for # git repositories. class gitosis inherits git { # directory for gitosis user and repositories file { "/var/git": ensure => directory, mode => 0755, owner => gitosis, group => gitosis, } # repositories folder file { "/var/git/repositories": ensure => directory, owner => gitosis, group => gitosis, 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 { "gitosis": ensure => installed } # ensures that the group exists group { "gitosis": ensure => present, allowdupe => false, require => Package["gitosis"], } # alters the user's home dir user { "gitosis": allowdupe => false, comment => "git repository hosting,,,", ensure => present, home => "/var/git", shell => "/bin/sh", gid => "gitosis", groups => [ "puppet" ], require => Group["gitosis"], } # tries to get rid of ugly directory structure file { "/srv/gitosis": ensure => absent, force => true, backup => false, require => User["gitosis"], } # we also don't need /var/gitosis file { "/var/gitosis": ensure => absent, force => true, backup => false, require => User["gitosis"], } # 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'], } }