Ottomata has uploaded a new change for review.

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


Change subject: Adding puppet Limn module.
......................................................................

Adding puppet Limn module.

Change-Id: Idb71d214135faac6d3c381aef8fcb2536f54644e
---
A modules/limn/README.md
A modules/limn/manifests/init.pp
A modules/limn/manifests/instance.pp
A modules/limn/templates/limn.init.erb
4 files changed, 142 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/10/49710/1

diff --git a/modules/limn/README.md b/modules/limn/README.md
new file mode 100644
index 0000000..da5d60a
--- /dev/null
+++ b/modules/limn/README.md
@@ -0,0 +1,14 @@
+[Limn][https://github.com/wikimedia/limn] puppet module.
+
+# Usage
+
+```puppet
+
+# Spawn up a limn instance called 'my-instance'.
+# Data files are expected to be at
+# /var/lib/limn/my-instance/data.
+limn::instance { "my-instance":
+  $port           = 8081,
+}
+
+```
diff --git a/modules/limn/manifests/init.pp b/modules/limn/manifests/init.pp
new file mode 100644
index 0000000..91b0fc2
--- /dev/null
+++ b/modules/limn/manifests/init.pp
@@ -0,0 +1,31 @@
+# == Class limn
+# Installs limn.
+# To spawn up a limn server instance, use the limn::instance define.
+class limn(
+       $var_directory  = "/var/lib/limn"
+       $log_directory  = "/var/log/limn"
+       $user           = "limn"
+       $group          = "limn"
+) {
+       package { "limn": ensure => present }
+
+       # Default limn containing data directory.
+       # Instances default to storing data in
+       # $var_directory/$name
+       file { $var_directory:
+               owner  => $user,
+               group  => $group,
+               mode   => "0755",
+               ensure => "directory",
+       }
+
+       # Default limn log directory.
+       # Instances will log to
+       # $log_directory/limn-$name.log
+       file { $log_directory:
+               owner  => $user,
+               group  => $group,
+               mode   => "0755",
+               ensure => "directory",
+       }
+}
\ No newline at end of file
diff --git a/modules/limn/manifests/instance.pp 
b/modules/limn/manifests/instance.pp
new file mode 100644
index 0000000..7ce4ea8
--- /dev/null
+++ b/modules/limn/manifests/instance.pp
@@ -0,0 +1,71 @@
+# == Define limn::instance
+# Starts up a Limn Server instance.
+#
+# == Parameters:
+# $port           - Listen port for Limn instance.  Default: 8081
+# $environment    - Node environment.  Default: production
+# $var_directory  - Limn instance var directory.  Default: /var/lib/limn/$name
+# $log_file       - Limn instance log file.  Default: 
/var/log/lim/limn-$name.log
+# $user           - Limn instance will run as this user.  Default: limn
+# $group          - Limn instance will run in this group.  Default: limn
+# $base_directory - Limn install base directory.  Default: /usr/lib/limn
+# $ensure         - present|absent.  Default: present
+#
+define limn::instance (
+       $port           = 8081,
+       $environment    = "production",
+       $var_directory  = "/var/lib/limn/${name}",
+       $log_file       = "/var/log/limn/limn-${name}.log",
+       $user           = "limn",
+       $group          = "limn",
+       $base_directory = "/usr/lib/limn",
+       $ensure         = "present",
+) {
+       require limn
+
+       file { $var_directory:
+               owner  => $user,
+               group  => $group,
+               mode   => "0755",
+               ensure => "directory",
+       }
+
+       # The upstart init conf will start server.co
+       # logging to this file.
+       file { $log_file:
+               owner  => $user,
+               group  => $group,
+               mode   => "0755",
+               ensure => "file",
+       }
+
+       # Install an upstart init file for this limn server instance.
+       file { "/etc/init/limn-${name}.conf":
+               content   => template("limn/limn.init.erb"),
+               owner     => "root",
+               group     => "root",
+               mode      => "0644",
+               ensure    => $ensure,
+               require   => [File[$var_directory], File[$log_file]],
+       }
+
+       # Symlink an /etc/init.d script to upstart-job
+       # for SysV compatibility.
+       file { "/etc/init.d/limn-${name}":
+               target  => "/lib/init/upstart-job",
+               ensure  => $ensure ? {
+                       present   => "link",
+                       default   => "absent",
+               },
+               require => File["/etc/init/limn-${name}.conf"],
+       }
+
+       service { "limn-${name}":
+               ensure     => $ensure ? {
+                       present   => "running",
+                       default   => "stopped",
+               },
+               provider   => "upstart",
+               subscribe  => File["/etc/init/limn-${name}.conf"],
+       }
+}
\ No newline at end of file
diff --git a/modules/limn/templates/limn.init.erb 
b/modules/limn/templates/limn.init.erb
new file mode 100644
index 0000000..3400f66
--- /dev/null
+++ b/modules/limn/templates/limn.init.erb
@@ -0,0 +1,26 @@
+# Note: This file is managed by Puppet.
+
+# Limn <%= name %> Server Instance
+
+description "Limn <%= name %> Server Instance"
+
+start on runlevel [2345]
+stop on starting rc RUNLEVEL=[016]
+
+respawn
+respawn limit 2 5
+
+umask 007
+
+kill timeout 300
+
+env NODE_ENV=<%= environment %>
+env LIMN_PORT=<%= port %>
+env LIMN_VARDIR=<%= var_directory %>
+
+setuid <%= user  %>
+setgid <%= group %>
+
+console output
+chdir <%= base_directory %>
+exec ./server/server.co >> <%= log_file %>

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idb71d214135faac6d3c381aef8fcb2536f54644e
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ottomata <[email protected]>

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

Reply via email to