Index: modules/downloadserver/manifests/init.pp |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/modules/downloadserver/manifests/init.pp |
@@ -0,0 +1,98 @@ |
+class downloadserver { |
+ user {'stats': |
+ ensure => present, |
+ home => '/home/stats', |
+ managehome => true |
+ } |
+ |
+ file {'/home/stats/.ssh': |
+ ensure => directory, |
+ owner => stats, |
+ mode => 0600, |
+ require => User['stats'] |
+ } |
+ |
+ file {'/home/stats/.ssh/authorized_keys': |
+ ensure => present, |
+ owner => stats, |
+ mode => 0400, |
+ source => 'puppet:///modules/private/subscriptionstat-authorized_keys' |
+ } |
+ |
+ class {'ssh': |
+ custom_configuration => 'Match User stats |
+ AllowTcpForwarding no |
+ X11Forwarding no |
+ AllowAgentForwarding no |
+ GatewayPorts no |
+ ForceCommand cat /var/www/stats.ini' |
+ } |
+ |
+ class {'nginx': |
+ worker_processes => 2, |
+ worker_connections => 4000, |
+ ssl_session_cache => off, |
+ } |
+ |
+ user {'hg': |
+ ensure => present, |
+ comment => 'Mercurial client user', |
+ home => '/home/hg', |
+ managehome => true |
+ } |
+ |
+ file {'/var/www': |
+ ensure => directory, |
+ owner => hg, |
+ mode => 0644 |
+ } |
+ |
+ exec { "fetch_downloads": |
+ command => "hg clone https://hg.adblockplus.org/downloads /var/www/downloads", |
+ path => ["/usr/bin/", "/bin/"], |
+ require => Package['mercurial'], |
+ user => hg, |
+ onlyif => "test ! -d /var/www/downloads" |
+ } |
+ |
+ File { |
+ owner => root, |
+ group => root, |
+ mode => 0644, |
+ } |
+ |
+ file {'/etc/nginx/sites-available/adblockplus.org_sslcert.key': |
+ ensure => file, |
+ notify => Service['nginx'], |
+ before => Nginx::Hostconfig['downloads.adblockplus.org'], |
+ mode => 0400, |
+ source => 'puppet:///modules/private/adblockplus.org_sslcert.key' |
+ } |
+ |
+ file {'/etc/nginx/sites-available/adblockplus.org_sslcert.pem': |
+ ensure => file, |
+ notify => Service['nginx'], |
+ before => Nginx::Hostconfig['downloads.adblockplus.org'], |
+ mode => 0400, |
+ source => 'puppet:///modules/private/adblockplus.org_sslcert.pem' |
+ } |
+ |
+ nginx::hostconfig{'downloads.adblockplus.org': |
+ source => 'puppet:///modules/downloadserver/downloads.adblockplus.org', |
+ enabled => true |
+ } |
+ |
+ file {'/etc/logrotate.d/nginx_downloads.adblockplus.org': |
+ ensure => file, |
+ mode => 0444, |
+ require => Nginx::Hostconfig['downloads.adblockplus.org'], |
+ source => 'puppet:///modules/downloadserver/logrotate' |
+ } |
+ |
+ cron {'mirror': |
+ ensure => present, |
+ command => 'hg pull -q -u -R /var/www/downloads/', |
+ user => hg, |
+ minute => '*/10' |
+ } |
+} |