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_pw, } file { '/etc/httpd/conf/geoip.conf': owner => 'root', group => 'root', mode => '0644', content => template('mirrorbrain/geoip.conf') } file { '/etc/httpd/conf/modules.d/11-mirrorbrain.conf': owner => 'root', group => 'root', mode => '0644', content => template('mirrorbrain/mod_mirrorbrain.conf') } file { '/etc/mirrorbrain.conf': owner => 'root', group => "$mb_user", 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', } # Update GeoIP db cron { 'MirrorBrain: weekly GeoIP update': command => 'sleep $(($RANDOM/1024)); /usr/bin/geoip-lite-update', user => 'root', minute => 30, hour => 3, weekday => 0 } # distrib tree # mga 1-4 are frozen, so only one manual run has been done # distrib/5 still active cron { 'MirrorBrain: Sync Mga 5 every 4 hours ': command => "/usr/bin/null-rsync rsync.mageia.org::mageia/distrib/5 ${mb_repo}/distrib/", user => "$mb_user", minute => '15', hour => '*/4', } # distrib/cauldron cron { 'MirrorBrain: Sync Cauldron every 1 hours ': command => "/usr/bin/null-rsync rsync.mageia.org::mageia/distrib/cauldron ${mb_repo}/distrib/", user => "$mb_user", minute => '0', hour => '*/1', } # iso tree cron { 'MirrorBrain: Sync iso tree every 1 day ': command => "/usr/bin/null-rsync rsync.mageia.org::mageia/iso ${mb_repo}/", user => "$mb_user", hour => '2', minute => '30', } # people tree cron { 'MirrorBrain: Sync people tree every 1 day ': command => "/usr/bin/null-rsync rsync.mageia.org::mageia/people ${mb_repo}/", user => "$mb_user", hour => '3', minute => '45', } # software tree cron { 'MirrorBrain: Sync software tree every 1 day ': command => "/usr/bin/null-rsync rsync.mageia.org::mageia/software ${mb_repo}/", user => "$mb_user", hour => '4', minute => '45', } # Mirror online check cron { 'MirrorBrain: mirror online status check every 5 minute': command => '/usr/bin/mirrorprobe', user => "$mb_user", minute => 5 } # Mirror scanning cron { 'MirrorBrain: mirror scanning every 30 minute': command => '/usr/bin/mb scan --quiet --jobs 4 --all', user => "$mb_user", minute => 30 } # Mirror database cleanup cron { 'MirrorBrain: mirror database cleanup every 1 week': command => '/usr/bin/mb db vacuum', user => "$mb_user", minute => 45, hour => 5, weekday => 1 } }