Ottomata has submitted this change and it was merged.

Change subject: Puppetize systemd override for Kafka LimitNOFILE
......................................................................


Puppetize systemd override for Kafka LimitNOFILE

/etc/default/kafka's KAFKA_NOFILES_ULIMIT is not useable
by the systemd service file installed by the latest WMF
Kafka package, so we need to puppetized a custom systemd
override file to set this.

Bug: T106581
Change-Id: I10f41d0d3a19b15374ded800f0d6cd12573c9fa9
---
M manifests/defaults.pp
M manifests/server.pp
M templates/kafka.default.erb
A templates/kafka.systemd.override.conf.erb
4 files changed, 47 insertions(+), 4 deletions(-)

Approvals:
  Ottomata: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/manifests/defaults.pp b/manifests/defaults.pp
index d9d01ef..d8bd296 100644
--- a/manifests/defaults.pp
+++ b/manifests/defaults.pp
@@ -83,7 +83,9 @@
     $consumer_properties_template        = 'kafka/consumer.properties.erb'
     $log4j_properties_template           = 'kafka/log4j.properties.erb'
     $server_properties_template          = 'kafka/server.properties.erb'
+    $server_systemd_override_template    = 
'kafka/kafka.systemd.override.conf.erb'
     $server_default_template             = 'kafka/kafka.default.erb'
     $mirror_default_template             = 'kafka/kafka-mirror.default.erb'
 
+
 }
diff --git a/manifests/server.pp b/manifests/server.pp
index aa4b873..d098a6d 100644
--- a/manifests/server.pp
+++ b/manifests/server.pp
@@ -177,8 +177,9 @@
     $jvm_performance_opts                = 
$kafka::defaults::jvm_performance_opts,
 
     $server_properties_template          = 
$kafka::defaults::server_properties_template,
+    $systemd_override_template           = 
$kafka::defaults::server_systemd_override_template,
     $default_template                    = 
$kafka::defaults::server_default_template,
-    $log4j_properties_template           = 
$kafka::defaults::log4j_properties_template
+    $log4j_properties_template           = 
$kafka::defaults::log4j_properties_template,
 ) inherits kafka::defaults
 {
     # Kafka class must be included before kafka::server.
@@ -205,6 +206,33 @@
     }
     else {
         $broker_port = $kafka::defaults::default_broker_port
+    }
+
+    # Debian Jessie (and greater) has systemd, and the WMF Kafka .deb
+    # package installs a systemd service file.  It is not possible
+    # to set number open files ulimit via /etc/default/kafka wth systemd,
+    # so we need to install a custom systemd override file.
+    $use_systemd = $::lsbdistid == 'Debian' and $::lsbmajdistrelease >= 8
+    if $use_systemd {
+        file { '/etc/systemd/system/kafka.service.d':
+            ensure => 'directory',
+        }
+        file { '/etc/systemd/system/kafka.service.d/override.conf':
+            content => template($systemd_override_template),
+        }
+        # systemd needs a reload to pick up changes to this file.
+        exec { 'systemd-reload-for-kafka-override':
+            command     => '/bin/systemctl daemon-reload',
+            refreshonly => true,
+            subscribe   => 
File['/etc/systemd/system/kafka.service.d/override.conf'],
+        }
+        $kafka_service_systemd_require = 
[Exec['systemd-reload-for-kafka-override']]
+    }
+    else {
+        # Puppet hack.  Puppet flattens nested arrays.
+        # If we aren't using systemd, then we don't want
+        # the Kafka service below to require the systemd exec.
+        $kafka_service_systemd_require = []
     }
 
     # Render out Kafka Broker config files.
@@ -245,13 +273,16 @@
     }
     service { 'kafka':
         ensure     => 'running',
+        hasrestart => true,
+        hasstatus  => true,
         require    => [
             File['/etc/kafka/server.properties'],
             File['/etc/kafka/log4j.properties'],
             File['/etc/default/kafka'],
             File[$log_dirs],
-        ],
-        hasrestart => true,
-        hasstatus  => true,
+            # This will be an empty array if we
+            # aren't using systemd.
+            $kafka_service_systemd_require,
+        ]
     }
 }
diff --git a/templates/kafka.default.erb b/templates/kafka.default.erb
index c13b29e..7fedb5b 100644
--- a/templates/kafka.default.erb
+++ b/templates/kafka.default.erb
@@ -26,7 +26,13 @@
 #CLASSPATH=""
 <% end -%>
 
+<%
+# This ulimit setting here only works with SysV init scripts, not with
+# systemd on newer Debian distros.  You'll need to use a systemd override
+# file if you want to set this with systemd.
+if not @use_systemd -%>
 KAFKA_NOFILES_ULIMIT=<%= @nofiles_ulimit %>
+<% end -%>
 
 # The default JMX_PORT for Kafka Brokers is 9999.
 # Set JMX_PORT to something else to override this.
diff --git a/templates/kafka.systemd.override.conf.erb 
b/templates/kafka.systemd.override.conf.erb
new file mode 100644
index 0000000..e2d37f0
--- /dev/null
+++ b/templates/kafka.systemd.override.conf.erb
@@ -0,0 +1,4 @@
+[Service]
+
+# Increase limit on number of open files.
+LimitNOFILE=<%= @nofiles_ulimit %>

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I10f41d0d3a19b15374ded800f0d6cd12573c9fa9
Gerrit-PatchSet: 7
Gerrit-Project: operations/puppet/kafka
Gerrit-Branch: master
Gerrit-Owner: Ottomata <[email protected]>
Gerrit-Reviewer: Ottomata <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to