Ottomata has uploaded a new change for review.

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

Change subject: [WIP] Puppetize eventlogging-service with systemd
......................................................................

[WIP] Puppetize eventlogging-service with systemd

Bug: T118780
Change-Id: I621de844ed7a5bd1ac532b52058925350d9e5337
---
A modules/eventlogging/initscripts/service.systemd.erb
M modules/eventlogging/manifests/init.pp
A modules/eventlogging/manifests/service/service.pp
A modules/eventlogging/templates/service.erb
4 files changed, 108 insertions(+), 28 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/65/253465/1

diff --git a/modules/eventlogging/initscripts/service.systemd.erb 
b/modules/eventlogging/initscripts/service.systemd.erb
new file mode 100644
index 0000000..45d457b
--- /dev/null
+++ b/modules/eventlogging/initscripts/service.systemd.erb
@@ -0,0 +1,12 @@
+[Unit]
+Description=EventLogging Produce HTTP Service
+After=network.target
+
+[Service]
+User=eventlogging
+Group=eventlogging
+WorkingDirectory=/var/log/eventlogging
+ExecStart=<%= @executable %> <%= @config_file %>
+
+[Install]
+WantedBy=multi-user.target
diff --git a/modules/eventlogging/manifests/init.pp 
b/modules/eventlogging/manifests/init.pp
index 2066cfa..ec6ea62 100644
--- a/modules/eventlogging/manifests/init.pp
+++ b/modules/eventlogging/manifests/init.pp
@@ -75,39 +75,13 @@
         '/etc/eventlogging.d/forwarders',
         '/etc/eventlogging.d/multiplexers',
         '/etc/eventlogging.d/processors',
-        '/etc/eventlogging.d/reporters'
+        '/etc/eventlogging.d/reporters',
+        '/etc/eventlogging.d/services',
     ]:
         ensure  => directory,
         recurse => true,
         purge   => true,
         force   => true,
-        before  => File['/etc/init/eventlogging'],
-    }
-
-    # Manage EventLogging services with 'eventloggingctl'.
-    # Usage: eventloggingctl {start|stop|restart|status|tail}
-    file { '/sbin/eventloggingctl':
-        source => 'puppet:///modules/eventlogging/eventloggingctl',
-        mode   => '0755',
-    }
-
-    # Upstart job definitions.
-    file { '/etc/init/eventlogging':
-        source  => 'puppet:///modules/eventlogging/init',
-        recurse => true,
-        purge   => true,
-        force   => true,
-    }
-
-    # 'eventlogging/init' is the master upstart task; it walks
-    # </etc/eventlogging.d> and starts a job for each instance
-    # definition file that it encounters.
-    service { 'eventlogging/init':
-        provider => 'upstart',
-        require  => [
-            File['/etc/init/eventlogging'],
-            User['eventlogging']
-        ],
     }
 
     # Plug-ins placed in this directory are loaded automatically.
@@ -137,4 +111,45 @@
         require => File["${log_dir}/archive"],
         mode    => '0444',
     }
+
+    # Temporary conditional while we migrate eventlogging service over to
+    # using systemd on Debian Jessie.  This will allow us to individually
+    # configure services on new nodes while not affecting the running
+    # eventlogging instance on Ubuntu Trusty.
+    if $::operatingsystem == 'Ubuntu' {
+        # Manage EventLogging services with 'eventloggingctl'.
+        # Usage: eventloggingctl {start|stop|restart|status|tail}
+        file { '/sbin/eventloggingctl':
+            source => 'puppet:///modules/eventlogging/eventloggingctl',
+            mode   => '0755',
+        }
+
+        # Upstart job definitions.
+        file { '/etc/init/eventlogging':
+            source  => 'puppet:///modules/eventlogging/init',
+            recurse => true,
+            purge   => true,
+            force   => true,
+            require => [
+                File['/etc/eventlogging.d'],
+                File['/etc/eventlogging.d/consumers]',
+                File['/etc/eventlogging.d/forwarders'],
+                File['/etc/eventlogging.d/multiplexers'],
+                File['/etc/eventlogging.d/processors'],
+                File['/etc/eventlogging.d/reporters'],
+                File['/etc/eventlogging.d/services'],
+            ]
+        }
+
+        # 'eventlogging/init' is the master upstart task; it walks
+        # </etc/eventlogging.d> and starts a job for each instance
+        # definition file that it encounters.
+        service { 'eventlogging/init':
+            provider => 'upstart',
+            require  => [
+                File['/etc/init/eventlogging'],
+                User['eventlogging']
+            ],
+        }
+    }
 }
diff --git a/modules/eventlogging/manifests/service/service.pp 
b/modules/eventlogging/manifests/service/service.pp
new file mode 100644
index 0000000..0316fc4
--- /dev/null
+++ b/modules/eventlogging/manifests/service/service.pp
@@ -0,0 +1,44 @@
+# == Define eventlogging::service::service
+# HTTP Produce Service for EventLogging
+#
+# == Parameters
+#
+# TODO: is this really what we want to call this class?!?
+define eventlogging::service::service(
+    $schemas_path,
+    $topic_config,
+    $outputs,
+    $port = 8085,
+    # TODO: Where does this go with scap3?
+    $executable = '/usr/local/bin/eventlogging/service'
+)
+{
+    include ::eventlogging
+
+    # Additional packages needed for eventlogging-service.
+
+    # Can't use require_package here because we need to specify version
+    # from jessie-backports:
+    # https://packages.debian.org/jessie-backports/python-tornado
+    if !defined(Package['python-tornado']) {
+        package { 'python-tornado':
+            ensure => '4.2.0-1~bpo8+1'
+        }
+    }
+
+    $basename = regsubst($title, '\W', '-', 'G')
+    $config_file = "/etc/eventlogging.d/services/${basename}"
+
+    # render the eventlogging-service argparse config file
+    file { $config_file:
+        ensure  => $ensure,
+        content => template('eventlogging/service.erb'),
+    }
+
+    # Use systemd for this eventlogging-service instance
+    base::service_unit { "eventlogging-service-${basename}":
+        template_name => 'service',
+        systemd => true,
+        refresh => false,
+    }
+}
diff --git a/modules/eventlogging/templates/service.erb 
b/modules/eventlogging/templates/service.erb
new file mode 100644
index 0000000..cf99bbf
--- /dev/null
+++ b/modules/eventlogging/templates/service.erb
@@ -0,0 +1,9 @@
+<% if @port -%>
+--port
+@port
+<% end -%>
+--schemas-path
+@schemas_path
+--topic-config
+@topic_config
+<%= @outputs.join("\n") %>

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I621de844ed7a5bd1ac532b52058925350d9e5337
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