Yuvipanda has submitted this change and it was merged.

Change subject: Wikimetrics: Puppet module for wikimetrics
......................................................................


Wikimetrics: Puppet module for wikimetrics

- Added base.pp for new module, sets up user and config repo
- Old role class is being replaced
- Add web, queue, and scheduler service classes
Bug: T101763

(This reverts commit 3ce062a5b2ee27e833c36d4bf5152c776ad395b9)

Change-Id: I75659ac832586a45c4a184fc2f54dc3fedcf651f
---
M manifests/role/wikimetrics.pp
A modules/wikimetrics/manifests/base.pp
A modules/wikimetrics/manifests/queue.pp
A modules/wikimetrics/manifests/redis.pp
A modules/wikimetrics/manifests/scheduler.pp
A modules/wikimetrics/manifests/web.pp
A modules/wikimetrics/templates/initscripts/wikimetrics-queue.systemd.erb
A modules/wikimetrics/templates/initscripts/wikimetrics-scheduler.systemd.erb
8 files changed, 216 insertions(+), 372 deletions(-)

Approvals:
  Yuvipanda: Verified; Looks good to me, approved



diff --git a/manifests/role/wikimetrics.pp b/manifests/role/wikimetrics.pp
index 41a8bcd..73987fa 100644
--- a/manifests/role/wikimetrics.pp
+++ b/manifests/role/wikimetrics.pp
@@ -1,389 +1,54 @@
 # == Class role::wikimetrics
-# Installs and hosts wikimetrics.
-# NOTE:  This class does not (yet) work in production!
-#
-# role::wikimetrics requires class passwords::wikimetrics to
-# exist and populated with variables.
-# passwords::wikimetrics is not a real class checked in to any repository.
-# In labs on your self hosted puppetmaster, you must do two
-# things to make this exist:
-# 1. Edit /var/lib/git/operations/puppet/manifests/passwords.pp
-#    and add this class with the variables below.
-# 2. Edit /var/lib/git/operations/puppet/manifests/site.pp
-#    and add an 'import "passwords.pp" line near the top.
-#
-# == Globals
-# These parameters can be set globally or via wikitech.
-# $wikimetrics_web_mode       - Either 'apache' or 'daemon'. If apache,
-#                               wikimetrics will be run in WSGI.  If
-#                               daemon, wikimetrics will be managed
-#                               as a python daemon process via upstart.
-#                               Default: apache
-# $wikimetrics_ssl_redirect   - If true, apache will force redirect any
-#                               requests made to https:://$server_name...
-#                               This does nothing if you are running in
-#                               daemon mode.  Default: false
-# $wikimetrics_server_name    - Apache ServerName.  This is not used if
-#                               $web_mode is daemon.  Default: $::fqdn
-# $wikimetrics_server_aliases - comma separated list of Apache ServerAlias-es.
-#                               Default: undef
-# $wikimetrics_server_port    - port on which to listen for wikimetrics web 
requests.
-#                               If in apache mode, this defaults to 80, else
-#                               this defaults to 5000.
-# $wikimetrics_backup         - If it the evaluates to true, backup gets set 
up.
-#                               Otherwise, backup gets turned off.
-#
+# This is the production wikimetrics role
 class role::wikimetrics {
-    # wikimetrics does not yet run via puppet in production
-    if $::realm == 'production' {
-        fail('Cannot include role::wikimetrics in production (yet).')
-    }
-
-    include passwords::wikimetrics
-
-    $wikimetrics_path = '/srv/wikimetrics'
-
-    # Wikimetrics Database Creds
-    $db_user_wikimetrics   = $::passwords::wikimetrics::db_user_wikimetrics
-    $db_pass_wikimetrics   = $::passwords::wikimetrics::db_pass_wikimetrics
-    $db_host_wikimetrics   = 'localhost'
-    $db_name_wikimetrics   = 'wikimetrics'
-
-    # Centralauth Database Creds
-    $db_user_centralauth   = $::passwords::wikimetrics::db_user_labsdb
-    $db_pass_centralauth   = $::passwords::wikimetrics::db_pass_labsdb
-    $db_host_centralauth   = 'labsdb1001.eqiad.wmnet'
-    $db_name_centralauth   = 'centralauth_p'
-
-    # Use the LabsDB for editor cohort analysis
-    $db_user_mediawiki     = $::passwords::wikimetrics::db_user_labsdb
-    $db_pass_mediawiki     = $::passwords::wikimetrics::db_pass_labsdb
-    $db_host_mediawiki     = 'labsdb1001.eqiad.wmnet'
-    $db_name_mediawiki     = '{0}_p'
-
-    # OAuth and Google Auth
-    $flask_secret_key      = $::passwords::wikimetrics::flask_secret_key
-    $google_client_id      = $::passwords::wikimetrics::google_client_id
-    $google_client_email   = $::passwords::wikimetrics::google_client_email
-    $google_client_secret  = $::passwords::wikimetrics::google_client_secret
-    $meta_mw_consumer_key  = $::passwords::wikimetrics::meta_mw_consumer_key
-    $meta_mw_client_secret = $::passwords::wikimetrics::meta_mw_client_secret
-
-    # base directory settings
-
-    # We keep vardir under /srv so that wikimetrics
-    # has enough space to write files.
-    $var_directory       = '/srv/var/wikimetrics'
-    $public_subdirectory = 'public'
-    $public_directory    = "${var_directory}/${public_subdirectory}"
-
-    # Run as daemon python process or in Apache WSGI.
-    $web_mode = $::wikimetrics_web_mode ? {
-        undef   => 'apache',
-        default => $::wikimetrics_web_mode,
-    }
-    $wikimetrics_user = 'wikimetrics'
-    # Make wikimetrics group 'www-data' if running in apache mode.
-    # This allows for apache to write files to wikimetrics var directories.
-    $wikimetrics_group = $web_mode ? {
-        'apache' => 'www-data',
-        default  => 'wikimetrics',
-    }
-
-
-    # if the global variable $::wikimetrics_server_name is set,
-    # use it as the server_name.  This allows
-    # configuration via the Labs Instance configuration page.
-    $server_name = $::wikimetrics_server_name ? {
-        undef   => $::fqdn,
-        default => $::wikimetrics_server_name,
-    }
-    $server_aliases = $::wikimetrics_server_aliases ? {
-        undef   => undef,
-        default => split($::wikimetrics_server_aliases, ','),
-    }
-
-    $server_port = $::wikimetrics_server_port ? {
-        # If $::wikimetrics_server_port is not set,
-        # default to port 80 for apache web mode,
-        # or port 5000 for daemon web mode.
-        undef   => $web_mode ? {
-            'apache' => 80,
-            default  => 5000,
-        },
-        default => $::wikimetrics_server_port,
-    }
-    $ssl_redirect = $::wikimetrics_ssl_redirect ? {
-        undef   => false,
-        default => $::wikimetrics_ssl_redirect,
-    }
-
-    # If the global variable $::wikimetrics_debug is set, then
-    # use it.  Otherwise, default to true.
-    $debug = $::wikimetrics_debug ? {
-        undef   => true,
-        default => $::wikimetrics_debug,
-    }
-
-    $celery_concurrency = $debug ? {
-        true  => 16,
-        # Run at 24 concurrency in non debug environments.
-        false => 24,
-    }
-
-    $db_pool_wikimetrics = $debug ? {
-        true  => 20,
-        # Run at 100 concurrency in non debug environments.
-        false => 100,
-    }
-
-    $db_pool_mediawiki = $debug ? {
-        true  => 32,
-        # Run at 200 concurrency in non debug environments.
-        false => 200,
-    }
-
-    # need pip :/
-    if !defined(Package['python-pip']) {
-        package { 'python-pip':
-            ensure => 'installed',
-        }
-    }
-    # Put data on /srv so it has room to grow
-    include role::labs::lvm::srv
-
-    # Make sure /srv/var exists.
-    # The wikimetrics module will manage $var_directory.
-    if !defined(File['/srv/var']) {
-        file { '/srv/var':
-            ensure  => 'directory',
-            mode    => '0755',
-            owner   => 'root',
-            group   => 'root',
-            require => Labs_lvm::Volume['second-local-disk'],
-            before  => Class['::wikimetrics'],
-        }
-    }
-
-
-    # Setup mysql, put data in /srv
-    class { 'mysql::server':
-        config_hash => {
-            'datadir' => '/srv/mysql'
-        },
-        before      => Class['::wikimetrics::database'],
-        require     => Labs_lvm::Volume['second-local-disk']
-    }
-
-    class { '::wikimetrics':
-        path                         => $wikimetrics_path,
-        user                         => $wikimetrics_user,
-        group                        => $wikimetrics_group,
-
-        # clone wikimetrics as root user so it can write to /srv
-        repository_owner             => 'root',
-
-        debug                        => $debug,
-
-        server_name                  => $server_name,
-        server_aliases               => $server_aliases,
-        server_port                  => $server_port,
-        ssl_redirect                 => $ssl_redirect,
-        celery_concurrency           => $celery_concurrency,
-
-        flask_secret_key             => $flask_secret_key,
-        google_client_id             => $google_client_id,
-        google_client_email          => $google_client_email,
-        google_client_secret         => $google_client_secret,
-        meta_mw_consumer_key         => $meta_mw_consumer_key,
-        meta_mw_client_secret        => $meta_mw_client_secret,
-
-        db_user_wikimetrics          => $db_user_wikimetrics,
-        db_pass_wikimetrics          => $db_pass_wikimetrics,
-        db_host_wikimetrics          => $db_host_wikimetrics,
-        db_name_wikimetrics          => $db_name_wikimetrics,
-        db_pool_wikimetrics          => $db_pool_wikimetrics,
-
-        db_user_centralauth          => $db_user_centralauth,
-        db_pass_centralauth          => $db_pass_centralauth,
-        db_host_centralauth          => $db_host_centralauth,
-        db_name_centralauth          => $db_name_centralauth,
-
-        db_user_mediawiki            => $db_user_mediawiki,
-        db_pass_mediawiki            => $db_pass_mediawiki,
-        db_host_mediawiki            => $db_host_mediawiki,
-        db_name_mediawiki            => $db_name_mediawiki,
-        db_pool_mediawiki            => $db_pool_mediawiki,
-        db_replication_lag_dbs       => [
-            'enwiki', # s1
-            'eowiki', # s2
-            'elwiki', # s3
-            'commonswiki', # s4
-            'dewiki', # s5
-            'frwiki', # s6
-            'eswiki', # s7
-        ],
-        db_replication_lag_threshold => 3,
-
-        # wikimetrics runs on the LabsDB usually,
-        # where the archive and revision tables have _userindex variants
-        # These are preferable to use for performance reasons
-        revision_tablename           => 'revision_userindex',
-        archive_tablename            => 'archive_userindex',
-
-        var_directory                => $var_directory,
-        public_subdirectory          => $public_subdirectory,
-
-        require                      => Labs_lvm::Volume['second-local-disk'],
-    }
-
-    # Run the wikimetrics/scripts/install script
-    # in order to pip install proper dependencies.
-    # Note:  This is not in the wikimetrics puppet module
-    # because it is an improper way to do things in
-    # WMF production.
-    exec { 'install_wikimetrics_dependencies':
-        command => "${wikimetrics_path}/scripts/install ${wikimetrics_path}",
-        creates => '/usr/local/bin/wikimetrics',
-        path    => '/usr/local/bin:/usr/bin:/bin',
-        user    => 'root',
-        require => [Package['python-pip'], Class['::wikimetrics']],
-    }
-
-    class { '::wikimetrics::database':
-        require => Exec['install_wikimetrics_dependencies'],
-    }
-
-    # The redis module by default sets up redis in /a.  Oh well!
-    if !defined(File['/a']) {
-        file { '/a':
-            ensure => directory,
-            before => Class['::wikimetrics::queue']
-        }
-    }
-
-    # Install redis and use a custom config template.
-    # Wikimetrics needs redis to save data for longer
-    # than the default redis.conf.erb template allows.
-    $redis_dir        = '/a/redis'
-    $redis_dbfilename = "${hostname}-6379.rdb"
-
-
-    redis::instance { 6379:
-        settings => {
-            dbfilename                  => "${::hostname}-${port}.rdb",
-            dir                         => '/srv/redis',
-            maxmemory                   => '1Gb',
-            maxmemory_policy            => 'volatile-lru',
-            maxmemory_samples           => 5,
-            no_appendfsync_on_rewrite   => true,
-            save                        => '60 20',
-            slave_read_only             => false,
-        },
-    }
-
-    # TODO: Support installation of queue, web and database
-    # classes on different nodes (maybe?).
-    class { '::wikimetrics::queue':
-        require => [
-            Exec['install_wikimetrics_dependencies'],
-        ],
-    }
+    include ::wikimetrics::base
 
     class { '::wikimetrics::web':
-        mode    => $web_mode,
-        require => Exec['install_wikimetrics_dependencies'],
+        workers => 4,
+    }
+
+    class { '::wikimetrics::redis':
+        queue_maxmemory => '1Gb',
+    }
+
+    class { '::wikimetrics::queue':
+        require => Class['::wikimetrics::redis']
     }
 
     class { '::wikimetrics::scheduler':
-        require => Exec['install_wikimetrics_dependencies'],
+        require => Class['::wikimetrics::redis']
+    }
+}
+
+# == Class role::wikimetrics::staging
+# This is the staging specific wikimetrics role
+class role::wikimetrics::staging {
+    include ::wikimetrics::base
+
+    # The mysql server is only included in staging role
+    # This is because we are setting up local databases in staging for
+    # testing purposes but using the labsdb for the production role.
+    # Labsdb gives us automatic backups and keeps our instance nfs free.
+    class { '::mysql::server':
+        config_hash        => {
+            'datadir'      => '/srv/mysql',
+            'bind_address' => '127.0.0.1',
+        },
     }
 
-    # backup regardless of whether we are in debug mode or not
-    if $::wikimetrics_backup {
-      $backup_ensure = 'present'
-    } else {
-      $backup_ensure = 'absent'
-    }
-    class { '::wikimetrics::backup':
-        ensure        => $backup_ensure,
-        destination   => "/data/project/wikimetrics/backup/${::hostname}",
-        db_user       => $db_user_wikimetrics,
-        db_pass       => $db_pass_wikimetrics,
-        db_name       => $db_name_wikimetrics,
-        db_host       => $db_host_wikimetrics,
-        redis_db_file => "${redis_dir}/${redis_dbfilename}",
-        public_files  => $public_directory,
-        keep_days     => 10,
+    class { '::wikimetrics::web':
+        workers => 1,
     }
 
-    # Get aggregated projectcounts files from git repo
-    # Note that this repo is for legacy projectcounts
-    # It should be analytics/aggregator/projectcounts/data.git
-    # but we keep it as is from legacy.
-    $aggregator_projectcounts_data_directory = 
'/srv/aggregator-projectcounts-data'
-    git::clone { 'aggregator_projectcounts_data':
-        ensure    => 'latest',
-        directory => $aggregator_projectcounts_data_directory,
-        origin    => 
'https://gerrit.wikimedia.org/r/p/analytics/aggregator/data.git',
-        owner     => $wikimetrics_user,
-        group     => $wikimetrics_group,
+    class { '::wikimetrics::redis':
+        queue_maxmemory => '1Gb',
     }
 
-    # Get aggregated projectview files from git repo
-    $aggregator_projectview_data_directory = '/srv/aggregator-projectview-data'
-    git::clone { 'aggregator_projectview_data':
-        ensure    => 'latest',
-        directory => $aggregator_projectview_data_directory,
-        origin    => 
'https://gerrit.wikimedia.org/r/p/analytics/aggregator/projectview/data.git',
-        owner     => $wikimetrics_user,
-        group     => $wikimetrics_group,
+    class { '::wikimetrics::queue':
+        require => Class['::wikimetrics::redis']
     }
 
-    # Create public datafiles folder
-    file { "${public_directory}/datafiles":
-        ensure  => 'directory',
-        owner   => $wikimetrics_user,
-        group   => $wikimetrics_group,
-        require => File[$public_directory],
-    }
-
-    # Link public DailyPageviews_legacy folder to 
aggregator_projectcounts_data folder
-    file { "${public_directory}/datafiles/LegacyPageviews":
-        ensure  => 'link',
-        target  => 
"${aggregator_projectcounts_data_directory}/projectcounts/daily",
-        owner   => $wikimetrics_user,
-        group   => $wikimetrics_group,
-        require => File["${public_directory}/datafiles"]
-    }
-
-    # Link public DailyPageviews folder to aggregator_projectview_data folder
-    file { "${public_directory}/datafiles/Pageviews":
-        ensure  => 'link',
-        target  => 
"${aggregator_projectview_data_directory}/projectview/daily",
-        owner   => $wikimetrics_user,
-        group   => $wikimetrics_group,
-        require => File["${public_directory}/datafiles"]
-    }
-
-    # Using logster to send wikimetrics stats to statsd -> graphite.
-    # hardcoded labs statsdhost: labmon1001.eqiad.wmnet
-    # crontab should run once a day at 23 hours
-    if !$debug {
-        logster::job { 'wikimetrics-apache-requests':
-            minute          => '0',
-            hour            => '23',
-            parser          => 'LineCountLogster',
-            logfile         => '/var/log/apache2/access.wikimetrics.log',
-            logster_options => "-o statsd 
--statsd-host=labmon1001.eqiad.wmnet:8125 
--metric-prefix='analytics.wikimetrics.requests.ui' --parser-options 
'--regex=.*(report|cohort|metrics|login|about|contact).*'"
-        }
-
-        logster::job { 'wikimetrics-number-of-successful-reports':
-            minute          => '10',
-            hour            => '23',
-            parser          => 'LineCountLogster',
-            logfile         => '/var/log/apache2/access.wikimetrics.log',
-            logster_options => "-o statsd 
--statsd-host=labmon1001.eqiad.wmnet:8125 
--metric-prefix='analytics.wikimetrics.successful_reports' --parser-options 
'--regex=.* succeeded .*'"
-        }
+    class { '::wikimetrics::scheduler':
+        require => Class['::wikimetrics::redis']
     }
 }
diff --git a/modules/wikimetrics/manifests/base.pp 
b/modules/wikimetrics/manifests/base.pp
new file mode 100644
index 0000000..e168358
--- /dev/null
+++ b/modules/wikimetrics/manifests/base.pp
@@ -0,0 +1,69 @@
+# == Class: wikimetrics
+# This class sets up the wikimetrics user and the deploy repo
+#
+class wikimetrics::base (
+    $branch = 'master',
+) {
+
+    $user = 'wikimetrics'
+    $group = 'wikimetrics'
+    $venv_path = '/srv/wikimetrics/venv'
+    $config_path = '/srv/wikimetrics/config'
+    $source_path = '/srv/wikimetrics/src'
+
+    # We use virtualenv and pip install requirements because not all of them
+    # have debian packages available
+    ensure_packages(['virtualenv', 'gcc', 'python-dev', 'libmysqlclient-dev'])
+
+    group { $group:
+      ensure => 'present',
+      system => true,
+    }
+
+    user { $user:
+        ensure     => 'present',
+        gid        => $group,
+        shell      => '/bin/false',
+        home       => '/nonexistent',
+        managehome => false,
+        system     => true,
+    }
+
+    file { '/srv':
+        ensure => directory,
+        owner  => 'root',
+        group  => 'root',
+        mode   => '0775',
+    }
+
+    file { '/srv/wikimetrics':
+        ensure  => directory,
+        owner   => $user,
+        group   => $group,
+        mode    => '0775',
+        require => [File['/srv'], User[$user], Group[$group]],
+    }
+
+    # Setup the deployment repository
+    git::clone { 'wikimetrics-deploy':
+        ensure    => present,
+        origin    => 
'https://gerrit.wikimedia.org/r/analytics/wikimetrics-deploy',
+        directory => $config_path,
+        branch    => $branch,
+        owner     => $user,
+        group     => $group,
+        require   => File['/srv/wikimetrics'],
+    }
+
+    # Setup the source repository
+    git::clone { 'wikimetrics':
+        ensure    => present,
+        origin    => 'https://gerrit.wikimedia.org/r/analytics/wikimetrics',
+        directory => $source_path,
+        branch    => $branch,
+        owner     => $user,
+        group     => $group,
+        require   => File['/srv/wikimetrics'],
+    }
+
+}
diff --git a/modules/wikimetrics/manifests/queue.pp 
b/modules/wikimetrics/manifests/queue.pp
new file mode 100644
index 0000000..c019d6d
--- /dev/null
+++ b/modules/wikimetrics/manifests/queue.pp
@@ -0,0 +1,15 @@
+# == Class: wikimetrics::queue
+# Sets up the celery queue for wikimetrics
+# This is done by launching the wikimetrics init script,
+# with the queue mode and passing relevant config files
+
+class wikimetrics::queue {
+    require wikimetrics::base
+
+    $config_path      = $::wikimetrics::base::config_path
+    $venv_path        = $::wikimetrics::base::venv_path
+
+    base::service_unit { 'wikimetrics-queue':
+        systemd => true,
+    }
+}
diff --git a/modules/wikimetrics/manifests/redis.pp 
b/modules/wikimetrics/manifests/redis.pp
new file mode 100644
index 0000000..ad3c939
--- /dev/null
+++ b/modules/wikimetrics/manifests/redis.pp
@@ -0,0 +1,24 @@
+# == Class: wikimetrics::redis
+# Sets up redis for use by wikimetrics queue and scheduler
+
+class wikimetrics::redis(
+    $queue_maxmemory = '1Gb',
+) {
+
+    file {'/srv/redis/queue':
+        ensure => directory,
+        owner  => 'redis',
+        group  => 'redis',
+        mode   => '0774'
+    }
+
+    redis::instance { '6379':
+        settings => {
+            bind           => '0.0.0.0',
+            dir            => '/srv/redis/queue',
+            maxmemory      => $queue_maxmemory,
+            tcp_keepalive  => 60,
+        },
+        require  => File['/srv/redis/queue']
+    }
+}
diff --git a/modules/wikimetrics/manifests/scheduler.pp 
b/modules/wikimetrics/manifests/scheduler.pp
new file mode 100644
index 0000000..7b3e03d
--- /dev/null
+++ b/modules/wikimetrics/manifests/scheduler.pp
@@ -0,0 +1,16 @@
+# == Class: wikimetrics::scheduler
+# Sets up the celery beat based scheduler for wikimetrics
+# This is done by launching the wikimetrics init script,
+# with the scheduler mode and passing relevant config files.
+# The scheduler runs recurrent reports
+
+class wikimetrics::scheduler {
+    require wikimetrics::base
+
+    $config_path      = $::wikimetrics::base::config_path
+    $venv_path        = $::wikimetrics::base::venv_path
+
+    base::service_unit { 'wikimetrics-scheduler':
+        systemd => true,
+    }
+}
diff --git a/modules/wikimetrics/manifests/web.pp 
b/modules/wikimetrics/manifests/web.pp
new file mode 100644
index 0000000..fddbd0f
--- /dev/null
+++ b/modules/wikimetrics/manifests/web.pp
@@ -0,0 +1,24 @@
+# == Class: wikimetrics::web
+# Sets up a uwsgi based web server for Wikimetrics
+
+class wikimetrics::web(
+    $workers = 1,
+) {
+    require wikimetrics::base
+
+    uwsgi::app { 'wikimetrics-web':
+        settings => {
+            uwsgi => {
+                plugins      => 'python, router_redirect',
+                'wsgi-file'  => 
"${wikimetrics::base::source_path}/wikimetrics/api.wsgi",
+                master       => true,
+                chdir        => $wikimetrics::base::source_path,
+                http-socket  => '0.0.0.0:8080',
+                venv         => $wikimetrics::base::venv_path,
+                processes    => $workers,
+                # Look at the X_FORWARDED_PROTO, and if it's http, redirect to 
https
+                route-if     => "equal:${HTTP_X_FORWARDED_PROTO};http 
redirect-permanent:https://${HTTP_HOST}${REQUEST_URI}";,
+            }
+        }
+    }
+}
diff --git 
a/modules/wikimetrics/templates/initscripts/wikimetrics-queue.systemd.erb 
b/modules/wikimetrics/templates/initscripts/wikimetrics-queue.systemd.erb
new file mode 100644
index 0000000..0657b65
--- /dev/null
+++ b/modules/wikimetrics/templates/initscripts/wikimetrics-queue.systemd.erb
@@ -0,0 +1,15 @@
+[Unit]
+Description=wikimetrics queue
+
+[Service]
+# Launching the wikimetrics script with the queue mode launches the celery 
task queue
+ExecStart=<%= @venv_path %>/bin/wikimetrics \
+    --mode=queue \
+    --db-config=<%= @config_path %>/db_config.yaml \
+    --queue-config=<%= @config_path %>/queue_config.yaml \
+    --web-config=<%= @config_path %>/web_config.yaml
+User = wikimetrics
+Group = wikimetrics
+
+[Install]
+WantedBy=multi-user.target
diff --git 
a/modules/wikimetrics/templates/initscripts/wikimetrics-scheduler.systemd.erb 
b/modules/wikimetrics/templates/initscripts/wikimetrics-scheduler.systemd.erb
new file mode 100644
index 0000000..532bc77
--- /dev/null
+++ 
b/modules/wikimetrics/templates/initscripts/wikimetrics-scheduler.systemd.erb
@@ -0,0 +1,16 @@
+[Unit]
+Description=wikimetrics scheduler
+
+[Service]
+# Launching the wikimetrics script with the scheduler mode launches the
+# celery beat based scheduler for running recurrent reports
+ExecStart=<%= @venv_path %>/bin/wikimetrics \
+    --mode=scheduler \
+    --db-config=<%= @config_path %>/db_config.yaml \
+    --queue-config=<%= @config_path %>/queue_config.yaml \
+    --web-config=<%= @config_path %>/web_config.yaml
+User = wikimetrics
+Group = wikimetrics
+
+[Install]
+WantedBy=multi-user.target

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I75659ac832586a45c4a184fc2f54dc3fedcf651f
Gerrit-PatchSet: 4
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Yuvipanda <[email protected]>
Gerrit-Reviewer: Madhuvishy <[email protected]>
Gerrit-Reviewer: Yuvipanda <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to