aboutsummaryrefslogtreecommitdiffstats
path: root/modules/mirrorbrain/manifests/init.pp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/mirrorbrain/manifests/init.pp')
-rw-r--r--modules/mirrorbrain/manifests/init.pp154
1 files changed, 154 insertions, 0 deletions
diff --git a/modules/mirrorbrain/manifests/init.pp b/modules/mirrorbrain/manifests/init.pp
new file mode 100644
index 00000000..f7f74ead
--- /dev/null
+++ b/modules/mirrorbrain/manifests/init.pp
@@ -0,0 +1,154 @@
+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
+ }
+}