class mirrorbrain { $mb_user = 'mirrorbrain' $mb_home = "/var/lib/${mb_user}" $mb_repo = "${mb_home}/mirror" $mb_vhost = "dl.${::domain}" $mb_pgsql_pw = extlookup('mirrorbrain_pgsql','x') group { $mb_user: ensure => present } user { $mb_user: ensure => present, home => $mb_home } file { $mb_home: ensure => directory, owner => $mb_user, group => $mb_user, mode => '0751' } file { $mb_repo: ensure => directory, owner => $mb_user, group => $mb_user, mode => '0755' } package {['mirrorbrain', 'mirrorbrain-scanner', 'mirrorbrain-tools', 'apache-mod_mirrorbrain', 'apache-mod_dbd']: } postgresql::remote_db_and_user { 'mirrorbrain': description => 'Mirrorbrain database', password => $mb_pgsql_password, } file { '/etc/httpd/conf/geoip.conf': owner => 'root', group => 'root', mode => '0644', content => template('mirrorbrain/geoip.conf') } file { '/etc/mirrorbrain.conf': owner => 'root', group => 'apache', mode => '0640', content => template('mirrorbrain/mirrorbrain.conf') } apache::vhost::base { "${mb_vhost}": vhost => "${mb_vhost}", location => "${mb_repo}" } apache::vhost::base { "ssl_${mb_vhost}": vhost => "${mb_vhost}", use_ssl => true, location => "${mb_repo}" } apache::webapp_other { 'mirrorbrain': webapp_file => 'mirrorbrain/webapp.conf', } cron { 'GeoIP update': command => 'sleep $(($RANDOM/1024)); /usr/bin/geoip-lite-update', user => 'root', minute => 30, hour => 3, weekday => 0 } cron { 'fake mirror update': command => "/usr/bin/null-rsync rsync.mageia.org::mageia ${mb_repo}/", user => "$mb_user", minute => 5 } cron { 'mirror online status check': command => '/usr/bin/mirrorprobe', user => "$mb_user", minute => 5 } cron { 'mirror scanning': command => '/usr/bint/mb scan --quiet --jobs 4 --all', user => "$mb_user", minute => 30 } cron { 'mirror database cleanup': command => '/usr/bint/mb db vacuum', user => "$mb_user", minute => 30, hour => 2, weekday => 1 } }