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