Physikerwelt has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/156137

Change subject: wip: mathoid role
......................................................................

wip: mathoid role

Change-Id: I6c14b350def9c24546a326ff59f6efad83a6e988
---
A puppet/modules/mathoid/manifests/init.pp
A puppet/modules/mathoid/templates/config.erb
A puppet/modules/mathoid/templates/logrotate.erb
A puppet/modules/mathoid/templates/upstart.erb
A puppet/modules/mathoid/tests/Makefile
A puppet/modules/mathoid/tests/mathoid.pp
A puppet/modules/role/manifests/mathoid.pp
7 files changed, 176 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/vagrant 
refs/changes/37/156137/1

diff --git a/puppet/modules/mathoid/manifests/init.pp 
b/puppet/modules/mathoid/manifests/init.pp
new file mode 100644
index 0000000..662fefb
--- /dev/null
+++ b/puppet/modules/mathoid/manifests/init.pp
@@ -0,0 +1,80 @@
+# == Class: mathoid
+#
+# mathoid is a node.js backend for the math rendering.
+#
+# === Parameters
+#
+# [*base_path*]
+#   Path to the mathoid code.
+# [*node_path*]
+#   Path to the node modules mathoid depends on.
+# [*conf_path*]
+#   Where to place the config file.
+# [*log_dir*]
+#   Place where mathoid can put log files. Assumed to be already existing and
+#   have write access to mathoid user.
+# [*port*]
+#   Port where to run the mathoid service. Defaults to 10042.
+
+#
+class mathoid(
+    $base_path,
+    $node_path,
+    $conf_path,
+    $log_dir,
+    $port=10042
+) {
+    # not required for vagrant (we clone via git here)
+    # deployment::target { 'mathoid': }
+
+    package { ['nodejs'
+    # TODO Add dependency to node-jsdom once
+    # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=742347
+    # is fixed
+              ]:
+        ensure => present,
+    }
+
+    $log_file = "${log_dir}/main.log"
+
+    file { $log_dir:
+        ensure => directory,
+        owner  => mathoid,
+        group  => mathoid,
+        mode   => '0775',
+    }
+
+    file { $conf_path:
+        ensure  => present,
+        owner   => mathoid,
+        group   => mathoid,
+        mode    => '0555',
+        content => template('mathoid/config.erb'),
+    }
+
+    # The upstart configuration
+    file { '/etc/init/mathoid.conf':
+        ensure  => present,
+        owner   => root,
+        group   => root,
+        mode    => '0444',
+        content => template('mathoid/upstart.erb'),
+    }
+
+    file { '/etc/logrotate.d/mathoid':
+        ensure  => present,
+        owner   => root,
+        group   => root,
+        mode    => '0444',
+        content => template('mathoid/logrotate.erb'),
+    }
+
+    service { 'mathoid':
+        ensure     => running,
+        hasstatus  => true,
+        hasrestart => true,
+        provider   => 'upstart',
+        require    => File[$log_dir],
+        subscribe  => File['/etc/init/mathoid.conf'],
+    }
+}
diff --git a/puppet/modules/mathoid/templates/config.erb 
b/puppet/modules/mathoid/templates/config.erb
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/puppet/modules/mathoid/templates/config.erb
@@ -0,0 +1 @@
+{}
diff --git a/puppet/modules/mathoid/templates/logrotate.erb 
b/puppet/modules/mathoid/templates/logrotate.erb
new file mode 100644
index 0000000..13649f9
--- /dev/null
+++ b/puppet/modules/mathoid/templates/logrotate.erb
@@ -0,0 +1,13 @@
+#####################################################################
+### THIS FILE IS MANAGED BY PUPPET
+#####################################################################
+
+<%= @log_dir %>/* {
+    daily
+    copytruncate
+    missingok
+    compress
+    notifempty
+    rotate 15
+    size 256M
+}
diff --git a/puppet/modules/mathoid/templates/upstart.erb 
b/puppet/modules/mathoid/templates/upstart.erb
new file mode 100644
index 0000000..43eb3f1
--- /dev/null
+++ b/puppet/modules/mathoid/templates/upstart.erb
@@ -0,0 +1,25 @@
+#####################################################################
+### THIS FILE IS MANAGED BY PUPPET
+#####################################################################
+
+description "Mathoid HTTP service"
+
+start on (local-filesystems and net-device-up IFACE!=lo)
+stop on runlevel [!2345]
+
+# up ulimit -n a bit
+limit nofile 10000 10000
+
+setuid "mathoid"
+setgid "mathoid"
+
+env NODE_PATH="<%= @node_path %>"
+env MATHOID_PORT="<%= @port %>"
+
+respawn
+
+# wait 60 seconds for a graceful restart before killing the master
+kill timeout 60
+
+chdir "<%= @base_path %>"
+exec /usr/bin/nodejs mathoid.js >> "<%= @log_file %>" 2>&1
diff --git a/puppet/modules/mathoid/tests/Makefile 
b/puppet/modules/mathoid/tests/Makefile
new file mode 100644
index 0000000..76cd656
--- /dev/null
+++ b/puppet/modules/mathoid/tests/Makefile
@@ -0,0 +1,13 @@
+MANIFESTS=$(wildcard *.pp)
+OBJS=$(MANIFESTS:.pp=.po)
+TESTS_DIR=$(dir $(CURDIR))
+MODULE_DIR=$(TESTS_DIR:/=)
+MODULES_DIR=$(dir $(MODULE_DIR))
+
+all:   test
+
+test:  $(OBJS)
+
+%.po:  %.pp
+       puppet parser validate $<
+       puppet apply --noop --modulepath $(MODULES_DIR) $<
diff --git a/puppet/modules/mathoid/tests/mathoid.pp 
b/puppet/modules/mathoid/tests/mathoid.pp
new file mode 100644
index 0000000..ff9ee0f
--- /dev/null
+++ b/puppet/modules/mathoid/tests/mathoid.pp
@@ -0,0 +1,7 @@
+class { 'mathoid':
+    base_path => '/tmp/mathoid/',
+    node_path => '/tmp/mathoid/node_modules',
+    conf_path => '/tmp/mathoid/config.config.json',
+    log_dir   => '/var/log/mathoid',
+    port   => '10042',
+}
diff --git a/puppet/modules/role/manifests/mathoid.pp 
b/puppet/modules/role/manifests/mathoid.pp
new file mode 100644
index 0000000..adbbd2c
--- /dev/null
+++ b/puppet/modules/role/manifests/mathoid.pp
@@ -0,0 +1,37 @@
+class role::mathoid {
+
+  git::clone { 'mediawiki/services/mathoid':
+    owner => 'root',
+    directory  => '/srv/mathoid',
+  }
+
+  class { '::mathoid':
+    base_path => '/srv/mathoid',
+    node_path => '/srv/mathoid/node_modules',
+    conf_path => '/srv/mathoid/mathoid.config.json',
+    log_dir   => '/var/log/mathoid',
+    require   => Git::Clone['mediawiki/services/mathoid'],
+    #require   => File[ '/srv/' ]
+  }
+
+  file { '/srv/mathoid':
+    ensure => directory,
+    owner => mathoid,
+    group => mathoid,
+    mode => '755',
+  }
+
+  group { 'mathoid':
+  ensure => present,
+  name   => 'mathoid',
+  system => true,
+  }
+
+  user { 'mathoid':
+  gid           => 'mathoid',
+  home          => '/srv/mathoid',
+  managehome    => true,
+  system        => true,
+  }
+
+}
\ No newline at end of file

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6c14b350def9c24546a326ff59f6efad83a6e988
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: master
Gerrit-Owner: Physikerwelt <w...@physikerwelt.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to