Dzahn has submitted this change and it was merged.

Change subject: turn planet into a puppet module
......................................................................


turn planet into a puppet module

- move all files, templates, into module subdirs
- add README.md and turn role file into init.pp
- quoting and arrow alignment
- 2-space softtabs, etc. per puppet style guide

Change-Id: I9d0fda3f27715282068e760d2f01c2fc298314b7

rename planet class, per docs init.pp must exist and contain
a class matching the module name

Change-Id: I19034d090692387ca7e9d7f2d87fe4f9e13793e7

move defined resource types into separate files, one definition
per file inside a module as recommended by puppet docs

Change-Id: I91fc1ccad73b5498441de39a3e150e65e017df1b

move package install to own class and file,
move generic::locales out of init.pp

Change-Id: I63217308b7d3c6469ba3c30bc4a183e62f8b2b77

move webserver setup for planet out of init.pp

Change-Id: I00dde9965afe86b58ba609810bcaa6b588ac17af

move locales install and generation into own file,
step 1 to making module self contained instead
of declaring stuff from generic-definitions.pp

Change-Id: I239fa19a8bd40eadeb7a6aea3ab9feddb480610c

move needed planet directories to own class

Change-Id: I153848976801f3bd378f83dcfab0d70a4984fd66

move user/theme/apache_sites out of venus.pp, move index_site
setup to own file, move webserver setup out of init.pp

Change-Id: I9769542394ff96a46e0cf46e8269f9fbe9cc8e92

move language prefixes and translations to own class/file languages.
use a qualified variable to access it

Change-Id: I88a12546e4ed42b5d6ced9a4d68bf22fff64c486

various fixes to make puppet-lint like it,
like wrong quoting, unaligned arrows, variables without explicit scope,
lines longer than 80 chars, and more

Change-Id: I260c28ab1028f8d11e6e155540a708a45f63745f
---
D files/apache/sites/planet.wikimedia.org
D manifests/misc/planet.pp
D manifests/role/planet.pp
M manifests/site.pp
A modules/planet/README.md
A modules/planet/files/ssl/ports.conf.ssl
R modules/planet/files/ssl/star.planet.wikimedia.org.pem
R modules/planet/files/theme/config.ini
R modules/planet/files/theme/images/feed-icon-10x10.png
R modules/planet/files/theme/images/planet-wm.png
R modules/planet/files/theme/images/planet-wm2.png
R modules/planet/files/theme/planet-ar.css
R modules/planet/files/theme/planet.css
A modules/planet/manifests/apache_site.pp
A modules/planet/manifests/config.pp
A modules/planet/manifests/cronjob.pp
A modules/planet/manifests/dirs.pp
A modules/planet/manifests/docroot.pp
A modules/planet/manifests/index_site.pp
A modules/planet/manifests/init.pp
A modules/planet/manifests/languages.pp
A modules/planet/manifests/locales.pp
A modules/planet/manifests/packages.pp
A modules/planet/manifests/theme.pp
A modules/planet/manifests/user.pp
A modules/planet/manifests/venus.pp
A modules/planet/manifests/webserver.pp
R modules/planet/templates/apache/planet-language.erb
R modules/planet/templates/apache/planet.erb
R modules/planet/templates/feeds/ar_config.erb
R modules/planet/templates/feeds/ca_config.erb
R modules/planet/templates/feeds/cs_config.erb
R modules/planet/templates/feeds/de_config.erb
R modules/planet/templates/feeds/en_config.erb
R modules/planet/templates/feeds/es_config.erb
R modules/planet/templates/feeds/fr_config.erb
R modules/planet/templates/feeds/gmq_config.erb
R modules/planet/templates/feeds/it_config.erb
R modules/planet/templates/feeds/ja_config.erb
R modules/planet/templates/feeds/pl_config.erb
R modules/planet/templates/feeds/pt_config.erb
R modules/planet/templates/feeds/ro_config.erb
R modules/planet/templates/feeds/ru_config.erb
R modules/planet/templates/feeds/sr_config.erb
R modules/planet/templates/feeds/zh_config.erb
R modules/planet/templates/html/index.html.tmpl.erb
46 files changed, 393 insertions(+), 523 deletions(-)

Approvals:
  jenkins-bot: Verified
  Dzahn: Looks good to me, approved



diff --git a/files/apache/sites/planet.wikimedia.org 
b/files/apache/sites/planet.wikimedia.org
deleted file mode 100644
index 3704063..0000000
--- a/files/apache/sites/planet.wikimedia.org
+++ /dev/null
@@ -1,266 +0,0 @@
-# make all planet requests go to http instead of ssl
-
-<VirtualHost *:443>
-       ServerName planet.wikimedia.org
-       ServerAlias planet.wikipedia.org planet.wikipedia.com 
*.planet.wikimedia.org
-       SSLEngine on
-       SSLCertificateFile /etc/ssl/certs/star.wikimedia.org.pem
-       SSLCertificateKeyFile /etc/ssl/private/star.wikimedia.org.key
-
-       RewriteEngine on
-       RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301]
-</VirtualHost>
-
-<VirtualHost *:80>
-       ServerName planet.wikimedia.org
-       ServerAlias planet.wikipedia.org planet.wikipedia.com
-       php_admin_flag engine off
-
-       DocumentRoot /usr/local/planet/wikimedia-portal
-
-       <Directory /usr/local/planet/wikimedia-portal>
-               Allow from all
-               Redirect /atom.xml http://en.planet.wikimedia.org/atom.xml
-               Redirect /rss10.xml http://en.planet.wikimedia.org/rss10.xml
-               Redirect /rss20.xml http://en.planet.wikimedia.org/rss20.xml
-       </Directory>
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/ar/www
-       ServerName ar.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/ar/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/cs/www
-       ServerName cs.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/cs/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-<VirtualHost *:80>
-       ServerName da.planet.wikimedia.org
-       php_admin_flag engine off
-       redirectPermanent / http://gmq.planet.wikimedia.org/
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/it/www
-       ServerName it.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/it/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/de/www
-       ServerName de.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/de/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/en/www
-       ServerName en.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/en/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/es/www
-       ServerName es.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/es/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-<VirtualHost *:80>
-       ServerName fo.planet.wikimedia.org
-       php_admin_flag engine off
-       redirectPermanent / http://gmq.planet.wikimedia.org/
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/fr/www
-       ServerName fr.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/fr/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/gmq/www
-       ServerName gmq.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/gmq/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-<VirtualHost *:80>
-       ServerName is.planet.wikimedia.org
-       php_admin_flag engine off
-       redirectPermanent / http://gmq.planet.wikimedia.org/
-</VirtualHost>
-
-<VirtualHost *:80>
-       ServerName nb.planet.wikimedia.org
-       php_admin_flag engine off
-       redirectPermanent / http://gmq.planet.wikimedia.org/
-</VirtualHost>
-
-<VirtualHost *:80>
-       ServerName nn.planet.wikimedia.org
-       php_admin_flag engine off
-       redirectPermanent / http://gmq.planet.wikimedia.org/
-</VirtualHost>
-
-<VirtualHost *:80>
-       ServerName no.planet.wikimedia.org
-       php_admin_flag engine off
-       redirectPermanent / http://gmq.planet.wikimedia.org/
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/pl/www
-       ServerName pl.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/pl/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/pt/www
-       ServerName pt.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/pt/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/ru/www
-       ServerName ru.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/ru/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/sr/www
-       ServerName sr.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/sr/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-<VirtualHost *:80>
-       ServerName sv.planet.wikimedia.org
-       php_admin_flag engine off
-       redirectPermanent / http://gmq.planet.wikimedia.org/
-</VirtualHost>
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/zh/www
-       ServerName zh.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/zh/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
-
-
-<VirtualHost *:80>
-       DocumentRoot /usr/local/planet/wikimedia/ro/www
-       ServerName ro.planet.wikimedia.org
-       php_admin_flag engine off
-
-       <Directory /usr/local/planet/wikimedia/ro/www>
-               Allow from all
-       </Directory>
-       <Directory /usr/local/planet/wikimedia/shared/www>
-               Allow from all
-       </Directory>
-       Alias /shared /usr/local/planet/wikimedia/shared/www
-</VirtualHost>
diff --git a/manifests/misc/planet.pp b/manifests/misc/planet.pp
deleted file mode 100644
index 16bd154..0000000
--- a/manifests/misc/planet.pp
+++ /dev/null
@@ -1,133 +0,0 @@
-# http://planet.wikimedia.org/ - new planet (planet-venus)
-
-class misc::planet-venus( $planet_domain_name, $planet_languages ) {
-
-       $planet_languages_keys = keys($planet_languages)
-
-       # http://intertwingly.net/code/venus/
-       package { "planet-venus":
-               ensure => latest;
-       }
-
-       systemuser { planet: name => "planet", home => "/var/lib/planet", 
groups => [ "planet" ] }
-
-       File {
-               owner => "planet",
-               group => "planet",
-               mode => 0644,
-       }
-
-       file { [ "/var/www/planet", "/var/log/planet", 
"/usr/share/planet-venus/wikimedia", "/usr/share/planet-venus/theme/wikimedia", 
"/usr/share/planet-venus/theme/common", "/var/cache/planet" ]:
-               ensure => "directory",
-               mode => 0755,
-       }
-
-       file {
-               "/etc/apache2/ports.conf":
-                       ensure => present,
-                       mode => 0444,
-                       owner => root,
-                       group => root,
-                       source => "puppet:///files/apache/ports.conf.ssl";
-               "/etc/apache2/sites-available/planet.${planet_domain_name}":
-                       mode => 0444,
-                       owner => root,
-                       group => root,
-                       content => template('apache/sites/planet.erb');
-               "/usr/share/planet-venus/theme/common/images/planet-wm2.png":
-                       source => 
"puppet:///files/planet/images/planet-wm2.png";
-       }
-
-       define planetconfig {
-
-               file {
-                       "/usr/share/planet-venus/wikimedia/${title}":
-                               path => 
"/usr/share/planet-venus/wikimedia/${title}",
-                               mode => 0755,
-                               owner => planet,
-                               group => planet,
-                               ensure => directory;
-                       "/usr/share/planet-venus/wikimedia/${title}/config.ini":
-                               path => 
"/usr/share/planet-venus/wikimedia/${title}/config.ini",
-                               ensure => present,
-                               owner => planet,
-                               group => planet,
-                               mode => 0444,
-                               content => 
template("planet/${title}_config.erb"),
-               }
-       }
-
-       planetconfig { $planet_languages_keys: }
-
-       define planetwwwdir {
-
-               file {
-                       "/var/www/planet/${title}":
-                               path => "/var/www/planet/${title}",
-                               ensure => directory,
-                               owner => planet,
-                               group => www-data,
-                               mode => 0755,
-               }
-       }
-
-       planetwwwdir { $planet_languages_keys: }
-
-       define planetcronjob {
-
-               cron {
-                       "update-${title}-planet":
-                       ensure => present,
-                       command => "/usr/bin/planet -v 
/usr/share/planet-venus/wikimedia/${title}/config.ini > 
/var/log/planet/${title}-planet.log 2>&1",
-                       user => 'planet',
-                       minute => '0',
-                       require => [User['planet']];
-               }
-
-       }
-
-       planetcronjob { $planet_languages_keys: }
-
-       define planettheme {
-
-               file {
-                       "/usr/share/planet-venus/theme/wikimedia/${title}":
-                               ensure => directory;
-                       
"/usr/share/planet-venus/theme/wikimedia/${title}/index.html.tmpl":
-                               ensure => present,
-                               content => 
template("planet/index.html.tmpl.erb");
-                       
"/usr/share/planet-venus/theme/wikimedia/${title}/config.ini":
-                               source => 
"puppet:///files/planet/theme/config.ini";
-                       
"/usr/share/planet-venus/theme/wikimedia/${title}/planet.css":
-                               source => $title ? {
-                                       "ar" => 
'puppet:///files/planet/theme/planet-ar.css',
-                                       default => 
'puppet:///files/planet/theme/planet.css',
-                                       },
-
-               }
-
-
-       }
-
-       planettheme { $planet_languages_keys: }
-
-       define planetapachesite {
-
-               file {
-                       
"/etc/apache2/sites-available/${title}.planet.${planet_domain_name}":
-                               mode => 0444,
-                               owner => root,
-                               group => root,
-                               content => 
template('apache/sites/planet-language.erb');
-               }
-
-               apache_site { "${title}-planet": name => 
"${title}.planet.${planet_domain_name}" }
-       }
-
-       # Apache site without language, redirects to meta
-       apache_site { planet: name => "planet.${planet_domain_name}" }
-
-       # the actual *.planet language versions
-       planetapachesite{ $planet_languages_keys: }
-
-}
diff --git a/manifests/role/planet.pp b/manifests/role/planet.pp
deleted file mode 100644
index e2e1802..0000000
--- a/manifests/role/planet.pp
+++ /dev/null
@@ -1,123 +0,0 @@
-# planet RSS feed aggregator 2.0 (planet-venus)
-
-class role::planet {
-
-       system_role { "role::planet": description => "Planet (venus) weblog 
aggregator" }
-
-       # locales are essential for planet. if a new language is added check 
these too
-       include standard,
-       generic::locales::international
-
-       # be flexible about labs vs. prod
-       case $::realm {
-               labs: {
-                       $planet_domain_name = 'wmflabs.org'
-               }
-               production: {
-                       $planet_domain_name = 'wikimedia.org'
-               }
-               default: {
-                       fail('unknown realm, should be labs or production')
-               }
-       }
-
-       # webserver setup
-       install_certificate{ "star.planet.${planet_domain_name}": }
-       class {'webserver::php5': ssl => 'true'; }
-       apache_module { rewrite: name => "rewrite" }
-
-       # dependencies
-       Class['webserver::php5'] -> apache_module["rewrite"] -> 
Install_certificate["star.planet.${planet_domain_name}"]
-
-       # List all planet languages and translations for
-       # index.html.tmpl here.  Configurations, directories and
-       # cronjobs are auto-created from this hash.
-       $planet_languages = {
-               ar => {
-                       'subscribe' => 'اشترك',
-                       'subscriptions' => 'الاشتراكات',
-                       'lastupdated' => 'اخر تحديث',
-               },
-               ca => {
-                       'subscribe' => 'Subscriure\'s',
-                       'subscriptions' => 'Subscripcions',
-                       'lastupdated' => 'Última actualització',
-               },
-               cs => {
-                       'subscribe' => 'Přihlásit odběr',
-                       'subscriptions' => 'Odběry',
-                       'lastupdated' => 'Poslední aktualizace',
-               },
-               de => {
-                       'subscribe' => 'Abonnieren',
-                       'subscriptions' => 'Teilnehmer',
-                       'lastupdated' => 'Zuletzt aktualisiert',
-               },
-               en => {
-                       'subscribe' => 'Subscribe',
-                       'subscriptions' => 'Subscriptions',
-                       'lastupdated' => 'Last updated',
-               },
-               es => { 'subscribe' => 'Suscribirse',
-                       'subscriptions' => 'Suscripciones',
-                       'lastupdated' => 'Última actualización',
-               },
-               fr => {
-                       'subscribe' => 'S\'abonner',
-                       'subscriptions' => 'Abonnements',
-                       'lastupdated' => 'Dernière mise à jour',
-               },
-               gmq => {
-                       'subscribe' => 'Abonnér',
-                       'subscriptions' => 'Abonnementer',
-                       'lastupdated' => 'Senest opdateret',
-               },
-               it => {
-                       'subscribe' => 'Abbonati',
-                       'subscriptions' => 'Sottoscrizioni',
-                       'lastupdated' => 'Last updated',
-               },
-               ja => {
-                       'subscribe' => 'Subscribe',
-                       'subscriptions' => 'Subscriptions',
-                       'lastupdated' => 'Last updated',
-               },
-               pl => {
-                       'subscribe' => 'Subskrybuj',
-                       'subscriptions' => 'Subskrypcje',
-                       'lastupdated' => 'Ostatnia zmiana',
-               },
-               pt => {
-                       'subscribe' => 'Subscrever',
-                       'subscriptions' => 'Subcrições',
-                       'lastupdated' => 'Última actualização',
-               },
-               ro => {
-                       'subscribe' => 'Abonare',
-                       'subscriptions' => 'Abonări',
-                       'lastupdated' => 'Ultima actualizare',
-               },
-               ru => {
-                       'subscribe' => 'Подписаться',
-                       'subscriptions' => 'Подписки',
-                       'lastupdated' => 'Последнее обновление',
-               },
-               sr => {
-                       'subscribe' => 'Subscribe',
-                       'subscriptions' => 'Subscriptions',
-                       'lastupdated' => 'Last updated',
-               },
-               zh => {
-                       'subscribe' => '訂閱',
-                       'subscriptions' => '收錄',
-                       'lastupdated' => '最近更新'
-               },
-       }
-
-       # the actual planet-venus class doing all the rest
-       class {'misc::planet-venus':
-               planet_domain_name => $planet_domain_name,
-               planet_languages => $planet_languages,
-       }
-}
-
diff --git a/manifests/site.pp b/manifests/site.pp
index 446ef55..5e0c116 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -2869,7 +2869,7 @@
 node "zirconium.wikimedia.org" {
        include standard,
                admins::roots,
-               role::planet
+               planet
 
        interface_add_ip6_mapped { "main": interface => "eth0" }
 }
diff --git a/modules/planet/README.md b/modules/planet/README.md
new file mode 100644
index 0000000..6752a75
--- /dev/null
+++ b/modules/planet/README.md
@@ -0,0 +1,19 @@
+
+planet-venus module
+==============
+
+planet-venus is an RSS feed aggregator
+
+source:
+http://www.intertwingly.net/code/venus/
+
+package:
+http://packages.ubuntu.com/search?keywords=planet-venus&searchon=names
+
+used by the wmf at:
+http://meta.wikimedia.org/wiki/Planet_Wikimedia
+
+To install planet-venus:
+
+ include 'planet'
+
diff --git a/modules/planet/files/ssl/ports.conf.ssl 
b/modules/planet/files/ssl/ports.conf.ssl
new file mode 100644
index 0000000..25a0d02
--- /dev/null
+++ b/modules/planet/files/ssl/ports.conf.ssl
@@ -0,0 +1,10 @@
+# ! this file is managed by puppet !
+# simple Apache ports.conf with enabled SSL (NameVirtualHost *:443)
+
+NameVirtualHost *:80
+Listen 80
+
+<IfModule mod_ssl.c>
+    NameVirtualHost *:443
+    Listen 443
+</IfModule>
diff --git a/files/ssl/star.planet.wikimedia.org.pem 
b/modules/planet/files/ssl/star.planet.wikimedia.org.pem
similarity index 100%
rename from files/ssl/star.planet.wikimedia.org.pem
rename to modules/planet/files/ssl/star.planet.wikimedia.org.pem
diff --git a/files/planet/theme/config.ini 
b/modules/planet/files/theme/config.ini
similarity index 100%
rename from files/planet/theme/config.ini
rename to modules/planet/files/theme/config.ini
diff --git a/files/planet/images/feed-icon-10x10.png 
b/modules/planet/files/theme/images/feed-icon-10x10.png
similarity index 100%
rename from files/planet/images/feed-icon-10x10.png
rename to modules/planet/files/theme/images/feed-icon-10x10.png
Binary files differ
diff --git a/files/planet/images/planet-wm.png 
b/modules/planet/files/theme/images/planet-wm.png
similarity index 100%
rename from files/planet/images/planet-wm.png
rename to modules/planet/files/theme/images/planet-wm.png
Binary files differ
diff --git a/files/planet/images/planet-wm2.png 
b/modules/planet/files/theme/images/planet-wm2.png
similarity index 100%
rename from files/planet/images/planet-wm2.png
rename to modules/planet/files/theme/images/planet-wm2.png
Binary files differ
diff --git a/files/planet/theme/planet-ar.css 
b/modules/planet/files/theme/planet-ar.css
similarity index 100%
rename from files/planet/theme/planet-ar.css
rename to modules/planet/files/theme/planet-ar.css
diff --git a/files/planet/theme/planet.css 
b/modules/planet/files/theme/planet.css
similarity index 100%
rename from files/planet/theme/planet.css
rename to modules/planet/files/theme/planet.css
diff --git a/modules/planet/manifests/apache_site.pp 
b/modules/planet/manifests/apache_site.pp
new file mode 100644
index 0000000..cf1dd5c
--- /dev/null
+++ b/modules/planet/manifests/apache_site.pp
@@ -0,0 +1,20 @@
+# type: apache site config for a planet-venus language version
+
+define planet::apache_site {
+
+  $sites_directory = '/etc/apache2/sites-available'
+
+  file {
+    "${sites_directory}/${title}.planet.${planet::planet_domain_name}":
+      mode    => '0444',
+      owner   => 'root',
+      group   => 'root',
+      content => template('planet/apache/planet-language.erb');
+  }
+
+  apache_site {
+    "${title}-planet":
+      name => "${title}.planet.${planet::planet_domain_name}"
+  }
+
+}
diff --git a/modules/planet/manifests/config.pp 
b/modules/planet/manifests/config.pp
new file mode 100644
index 0000000..32e65fc
--- /dev/null
+++ b/modules/planet/manifests/config.pp
@@ -0,0 +1,19 @@
+# type: config dir and file for a planet-venus language
+define planet::config {
+
+  file {
+    "/usr/share/planet-venus/wikimedia/${title}":
+      ensure => directory,
+      path   => "/usr/share/planet-venus/wikimedia/${title}",
+      mode   => '0755',
+      owner  => 'planet',
+      group  => 'planet';
+    "/usr/share/planet-venus/wikimedia/${title}/config.ini":
+      ensure  => present,
+      path    => "/usr/share/planet-venus/wikimedia/${title}/config.ini",
+      owner   => 'planet',
+      group   => 'planet',
+      mode    => '0444',
+      content => template("planet/feeds/${title}_config.erb");
+    }
+}
diff --git a/modules/planet/manifests/cronjob.pp 
b/modules/planet/manifests/cronjob.pp
new file mode 100644
index 0000000..66ff385
--- /dev/null
+++ b/modules/planet/manifests/cronjob.pp
@@ -0,0 +1,17 @@
+# type: cronjob for planet-venus feed updates
+define planet::cronjob {
+
+  $planet_bin = '/usr/bin/planet'
+  $planet_config = "/usr/share/planet-venus/wikimedia/${title}/config.ini"
+  $planet_logfile = "/var/log/planet/${title}-planet.log"
+
+  cron {
+    "update-${title}-planet":
+    ensure  => present,
+    command => "${planet_bin} -v ${planet_config} > ${planet_logfile} 2>&1",
+    user    => 'planet',
+    minute  => '0',
+    require => [User['planet']];
+  }
+
+}
diff --git a/modules/planet/manifests/dirs.pp b/modules/planet/manifests/dirs.pp
new file mode 100644
index 0000000..04692f5
--- /dev/null
+++ b/modules/planet/manifests/dirs.pp
@@ -0,0 +1,18 @@
+# directories for a planet-venus intall
+class planet::dirs {
+
+  file { [
+    '/var/www/planet',
+    '/var/log/planet',
+    '/usr/share/planet-venus/wikimedia',
+    '/usr/share/planet-venus/theme/wikimedia',
+    '/usr/share/planet-venus/theme/common',
+    '/var/cache/planet'
+    ]:
+    ensure => 'directory',
+    owner  => 'planet',
+    group  => 'planet',
+    mode   => '0755',
+  }
+
+}
diff --git a/modules/planet/manifests/docroot.pp 
b/modules/planet/manifests/docroot.pp
new file mode 100644
index 0000000..8c019a9
--- /dev/null
+++ b/modules/planet/manifests/docroot.pp
@@ -0,0 +1,13 @@
+# type: document root for a planet-venus language
+define planet::docroot {
+
+  file {
+    "/var/www/planet/${title}":
+      ensure => directory,
+      path   => "/var/www/planet/${title}",
+      owner  => 'planet',
+      group  => 'www-data',
+      mode   => '0755',
+  }
+
+}
diff --git a/modules/planet/manifests/index_site.pp 
b/modules/planet/manifests/index_site.pp
new file mode 100644
index 0000000..b934e45
--- /dev/null
+++ b/modules/planet/manifests/index_site.pp
@@ -0,0 +1,19 @@
+# the planet-venus index/portal site
+
+class planet::index_site {
+
+  file {
+    "/etc/apache2/sites-available/planet.${planet::planet_domain_name}":
+      mode    => '0444',
+      owner   => 'root',
+      group   => 'root',
+      content => template('planet/apache/planet.erb');
+  }
+
+  # Apache site without language, redirects to meta
+  apache_site {
+    'planet':
+      name => "planet.${planet::planet_domain_name}"
+  }
+
+}
diff --git a/modules/planet/manifests/init.pp b/modules/planet/manifests/init.pp
new file mode 100644
index 0000000..b4efdab
--- /dev/null
+++ b/modules/planet/manifests/init.pp
@@ -0,0 +1,30 @@
+# planet RSS feed aggregator 2.0 (planet-venus)
+
+class planet {
+
+  system_role { 'planet': description => 'Planet (venus) weblog aggregator' }
+
+  # be flexible about labs vs. prod
+  case $::realm {
+    labs: {
+      $planet_domain_name = 'wmflabs.org'
+    }
+    production: {
+      $planet_domain_name = 'wikimedia.org'
+    }
+    default: {
+      fail('unknown realm, should be labs or production')
+    }
+  }
+
+  # set language versions and translations in languages.pp
+  include planet::languages
+
+  # the actual planet-venus class doing all the rest
+  class {'planet::venus':
+    planet_domain_name => $planet_domain_name,
+    planet_languages   => $languages::planet_languages,
+  }
+
+}
+
diff --git a/modules/planet/manifests/languages.pp 
b/modules/planet/manifests/languages.pp
new file mode 100644
index 0000000..8964826
--- /dev/null
+++ b/modules/planet/manifests/languages.pp
@@ -0,0 +1,89 @@
+# List all planet languages and translations for
+# index.html.tmpl here.  Configurations, directories and
+# cronjobs are auto-created from this hash.
+
+class planet::languages {
+
+  $planet_languages = {
+    ar  => {
+      'subscribe'     => 'اشترك',
+      'subscriptions' => 'الاشتراكات',
+      'lastupdated'   => 'اخر تحديث',
+    },
+    ca  => {
+      'subscribe'     => 'Subscriure\'s',
+      'subscriptions' => 'Subscripcions',
+      'lastupdated'   => 'Última actualització',
+    },
+    cs  => {
+      'subscribe'     => 'Přihlásit odběr',
+      'subscriptions' => 'Odběry',
+      'lastupdated'   => 'Poslední aktualizace',
+    },
+    de  => {
+      'subscribe'     => 'Abonnieren',
+      'subscriptions' => 'Teilnehmer',
+      'lastupdated'   => 'Zuletzt aktualisiert',
+    },
+    en  => {
+      'subscribe'     => 'Subscribe',
+      'subscriptions' => 'Subscriptions',
+      'lastupdated'   => 'Last updated',
+    },
+    es  => {
+      'subscribe'     => 'Suscribirse',
+      'subscriptions' => 'Suscripciones',
+      'lastupdated'   => 'Última actualización',
+    },
+    fr  => {
+      'subscribe'     => 'S\'abonner',
+      'subscriptions' => 'Abonnements',
+      'lastupdated'   => 'Dernière mise à jour',
+    },
+    gmq => {
+      'subscribe'     => 'Abonnér',
+      'subscriptions' => 'Abonnementer',
+      'lastupdated'   => 'Senest opdateret',
+    },
+    it  => {
+      'subscribe'     => 'Abbonati',
+      'subscriptions' => 'Sottoscrizioni',
+      'lastupdated'   => 'Last updated',
+    },
+    ja  => {
+      'subscribe'     => 'Subscribe',
+      'subscriptions' => 'Subscriptions',
+      'lastupdated'   => 'Last updated',
+    },
+    pl  => {
+      'subscribe'     => 'Subskrybuj',
+      'subscriptions' => 'Subskrypcje',
+      'lastupdated'   => 'Ostatnia zmiana',
+    },
+    pt  => {
+      'subscribe'     => 'Subscrever',
+      'subscriptions' => 'Subcrições',
+      'lastupdated'   => 'Última actualização',
+    },
+    ro  => {
+      'subscribe'     => 'Abonare',
+      'subscriptions' => 'Abonări',
+      'lastupdated'   => 'Ultima actualizare',
+    },
+    ru  => {
+      'subscribe'     => 'Подписаться',
+      'subscriptions' => 'Подписки',
+      'lastupdated'   => 'Последнее обновление',
+    },
+    sr  => {
+      'subscribe'     => 'Subscribe',
+      'subscriptions' => 'Subscriptions',
+      'lastupdated'   => 'Last updated',
+    },
+    zh  => {
+      'subscribe'     => '訂閱',
+      'subscriptions' => '收錄',
+      'lastupdated'   => '最近更新'
+    },
+  }
+}
diff --git a/modules/planet/manifests/locales.pp 
b/modules/planet/manifests/locales.pp
new file mode 100644
index 0000000..cdf72f0
--- /dev/null
+++ b/modules/planet/manifests/locales.pp
@@ -0,0 +1,25 @@
+# international locales for a planet-venus install
+class planet::locales {
+
+  # locales are important for planet
+  # they can be auto-updated though
+  package { 'locales':
+    ensure => latest;
+  }
+
+  #FIXME - move into module
+  file { '/var/lib/locales/supported.d/local':
+    source => 'puppet:///files/locales/local_int',
+    owner  => 'root',
+    group  => 'root',
+    mode   => '0444';
+  }
+
+  # generate locales
+  exec { '/usr/sbin/locale-gen':
+    subscribe   => File['/var/lib/locales/supported.d/local'],
+    refreshonly => true,
+    require     => File['/var/lib/locales/supported.d/local'];
+  }
+
+}
diff --git a/modules/planet/manifests/packages.pp 
b/modules/planet/manifests/packages.pp
new file mode 100644
index 0000000..a3a33e3
--- /dev/null
+++ b/modules/planet/manifests/packages.pp
@@ -0,0 +1,17 @@
+# packages for a planet-venus server
+
+class planet::packages {
+
+  # the main package
+  # prefer to update this manually
+  package { 'planet-venus':
+    ensure => present;
+  }
+
+  # locales are important for planet
+  # they can be auto-updated though
+  package { 'locales':
+    ensure => latest;
+  }
+
+}
diff --git a/modules/planet/manifests/theme.pp 
b/modules/planet/manifests/theme.pp
new file mode 100644
index 0000000..c05c323
--- /dev/null
+++ b/modules/planet/manifests/theme.pp
@@ -0,0 +1,40 @@
+# type: index html and css theme for a planet-venus language
+
+define planet::theme {
+
+  # file permission defaults
+  File {
+    owner => 'planet',
+    group => 'planet',
+    mode  => '0644',
+  }
+
+  # so far just one logo for all languages
+  $logo = 'planet-wm2.png'
+
+  # use different CSS for Arabic (right-to-left)
+  $css_file = $title ? {
+    'ar'    => 'planet-ar.css',
+    default => 'planet.css',
+  }
+
+  file {
+    # theme directory
+    "/usr/share/planet-venus/theme/wikimedia/${title}":
+      ensure  => directory;
+    # index.html template
+    "/usr/share/planet-venus/theme/wikimedia/${title}/index.html.tmpl":
+      ensure  => present,
+      content => template('planet/html/index.html.tmpl.erb');
+    # theme config file
+    "/usr/share/planet-venus/theme/wikimedia/${title}/config.ini":
+      source  => 'puppet:///modules/planet/theme/config.ini';
+    # logo image
+    "/usr/share/planet-venus/theme/common/images/${logo}":
+      source  => "puppet:///modules/planet/theme/images/${logo}";
+    # css file
+    "/usr/share/planet-venus/theme/wikimedia/${title}/${css_file}":
+      source  => "puppet:///modules/planet/theme/${css_file}";
+  }
+
+}
diff --git a/modules/planet/manifests/user.pp b/modules/planet/manifests/user.pp
new file mode 100644
index 0000000..71a864a
--- /dev/null
+++ b/modules/planet/manifests/user.pp
@@ -0,0 +1,10 @@
+# user for a planet-venus install
+class planet::user {
+
+  systemuser { 'planet':
+    name   => 'planet',
+    home   => '/var/lib/planet',
+    groups => [ 'planet' ],
+  }
+
+}
diff --git a/modules/planet/manifests/venus.pp 
b/modules/planet/manifests/venus.pp
new file mode 100644
index 0000000..9db06c6
--- /dev/null
+++ b/modules/planet/manifests/venus.pp
@@ -0,0 +1,23 @@
+# http://planet.wikimedia.org/ - new planet (planet-venus)
+# http://intertwingly.net/code/venus/
+
+class planet::venus( $planet_domain_name, $planet_languages ) {
+
+  $planet_languages_keys = keys($planet_languages)
+
+  # things done once
+  include planet::webserver,
+          planet::packages,
+          planet::locales,
+          planet::dirs,
+          planet::user,
+          planet::index_site
+
+  # things done per each language version
+  planet::config { $planet_languages_keys: }
+  planet::docroot { $planet_languages_keys: }
+  planet::cronjob { $planet_languages_keys: }
+  planet::theme { $planet_languages_keys: }
+  planet::apache_site{ $planet_languages_keys: }
+
+}
diff --git a/modules/planet/manifests/webserver.pp 
b/modules/planet/manifests/webserver.pp
new file mode 100644
index 0000000..46deb14
--- /dev/null
+++ b/modules/planet/manifests/webserver.pp
@@ -0,0 +1,23 @@
+# webserver with SSL for a planet-venus setup
+class planet::webserver {
+
+  install_certificate{ "star.planet.${planet::planet_domain_name}": }
+  class { 'webserver::php5': ssl   => true; }
+  apache_module { 'rewrite': name  => 'rewrite' }
+
+  file {
+    '/etc/apache2/ports.conf':
+      ensure => present,
+      mode   => '0444',
+      owner  => 'root',
+      group  => 'root',
+      source => 'puppet:///modules/planet/ssl/ports.conf.ssl';
+}
+
+  # dependencies
+  Class['webserver::php5'] ->
+  File['/etc/apache2/ports.conf'] ->
+  apache_module['rewrite'] ->
+  Install_certificate["star.planet.${planet::planet_domain_name}"]
+
+}
diff --git a/templates/apache/sites/planet-language.erb 
b/modules/planet/templates/apache/planet-language.erb
similarity index 100%
rename from templates/apache/sites/planet-language.erb
rename to modules/planet/templates/apache/planet-language.erb
diff --git a/templates/apache/sites/planet.erb 
b/modules/planet/templates/apache/planet.erb
similarity index 100%
rename from templates/apache/sites/planet.erb
rename to modules/planet/templates/apache/planet.erb
diff --git a/templates/planet/ar_config.erb 
b/modules/planet/templates/feeds/ar_config.erb
similarity index 100%
rename from templates/planet/ar_config.erb
rename to modules/planet/templates/feeds/ar_config.erb
diff --git a/templates/planet/ca_config.erb 
b/modules/planet/templates/feeds/ca_config.erb
similarity index 100%
rename from templates/planet/ca_config.erb
rename to modules/planet/templates/feeds/ca_config.erb
diff --git a/templates/planet/cs_config.erb 
b/modules/planet/templates/feeds/cs_config.erb
similarity index 100%
rename from templates/planet/cs_config.erb
rename to modules/planet/templates/feeds/cs_config.erb
diff --git a/templates/planet/de_config.erb 
b/modules/planet/templates/feeds/de_config.erb
similarity index 100%
rename from templates/planet/de_config.erb
rename to modules/planet/templates/feeds/de_config.erb
diff --git a/templates/planet/en_config.erb 
b/modules/planet/templates/feeds/en_config.erb
similarity index 100%
rename from templates/planet/en_config.erb
rename to modules/planet/templates/feeds/en_config.erb
diff --git a/templates/planet/es_config.erb 
b/modules/planet/templates/feeds/es_config.erb
similarity index 100%
rename from templates/planet/es_config.erb
rename to modules/planet/templates/feeds/es_config.erb
diff --git a/templates/planet/fr_config.erb 
b/modules/planet/templates/feeds/fr_config.erb
similarity index 100%
rename from templates/planet/fr_config.erb
rename to modules/planet/templates/feeds/fr_config.erb
diff --git a/templates/planet/gmq_config.erb 
b/modules/planet/templates/feeds/gmq_config.erb
similarity index 100%
rename from templates/planet/gmq_config.erb
rename to modules/planet/templates/feeds/gmq_config.erb
diff --git a/templates/planet/it_config.erb 
b/modules/planet/templates/feeds/it_config.erb
similarity index 100%
rename from templates/planet/it_config.erb
rename to modules/planet/templates/feeds/it_config.erb
diff --git a/templates/planet/ja_config.erb 
b/modules/planet/templates/feeds/ja_config.erb
similarity index 100%
rename from templates/planet/ja_config.erb
rename to modules/planet/templates/feeds/ja_config.erb
diff --git a/templates/planet/pl_config.erb 
b/modules/planet/templates/feeds/pl_config.erb
similarity index 100%
rename from templates/planet/pl_config.erb
rename to modules/planet/templates/feeds/pl_config.erb
diff --git a/templates/planet/pt_config.erb 
b/modules/planet/templates/feeds/pt_config.erb
similarity index 100%
rename from templates/planet/pt_config.erb
rename to modules/planet/templates/feeds/pt_config.erb
diff --git a/templates/planet/ro_config.erb 
b/modules/planet/templates/feeds/ro_config.erb
similarity index 100%
rename from templates/planet/ro_config.erb
rename to modules/planet/templates/feeds/ro_config.erb
diff --git a/templates/planet/ru_config.erb 
b/modules/planet/templates/feeds/ru_config.erb
similarity index 100%
rename from templates/planet/ru_config.erb
rename to modules/planet/templates/feeds/ru_config.erb
diff --git a/templates/planet/sr_config.erb 
b/modules/planet/templates/feeds/sr_config.erb
similarity index 100%
rename from templates/planet/sr_config.erb
rename to modules/planet/templates/feeds/sr_config.erb
diff --git a/templates/planet/zh_config.erb 
b/modules/planet/templates/feeds/zh_config.erb
similarity index 100%
rename from templates/planet/zh_config.erb
rename to modules/planet/templates/feeds/zh_config.erb
diff --git a/templates/planet/index.html.tmpl.erb 
b/modules/planet/templates/html/index.html.tmpl.erb
similarity index 100%
rename from templates/planet/index.html.tmpl.erb
rename to modules/planet/templates/html/index.html.tmpl.erb

-- 
To view, visit https://gerrit.wikimedia.org/r/54502
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I260c28ab1028f8d11e6e155540a708a45f63745f
Gerrit-PatchSet: 3
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Dzahn <[email protected]>
Gerrit-Reviewer: Dzahn <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to