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
