diff options
Diffstat (limited to 'modules/mirrorbrain/manifests')
-rw-r--r-- | modules/mirrorbrain/manifests/init.pp | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/modules/mirrorbrain/manifests/init.pp b/modules/mirrorbrain/manifests/init.pp new file mode 100644 index 00000000..e682ac82 --- /dev/null +++ b/modules/mirrorbrain/manifests/init.pp @@ -0,0 +1,107 @@ +rclass 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 => '0750' + } + + file { $mb_repo: + ensure => directory, + owner => $mb_user, + group => $mb_user, + mode => '0755' + } + + package {['mirrorbrain', + 'mirrorbrain-scanner', + 'mirrorbrain-tools', + 'apache-mod_mirrorbrain']: } + + + 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", + user => 'root', + 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 + } +} |