diff --git a/libraries/env_file.rb b/libraries/env_file.rb new file mode 100644 index 00000000..2c949693 --- /dev/null +++ b/libraries/env_file.rb @@ -0,0 +1,17 @@ +# +# Cookbook Name:: kafka +# Libraries:: env_file +# + +module Kafka + module EnvFile + def render_variable(key, value, export=false) + variable = sprintf('%s=%p', key, value.to_s) + export ? sprintf('export %s', variable) : variable + end + + def export? + node.kafka.init_style.to_sym != :systemd + end + end +end diff --git a/libraries/helpers.rb b/libraries/helpers.rb index de5b6d3b..4096ef6b 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -62,7 +62,6 @@ def kafka_init_opts 'debian' => '/etc/default/kafka', 'default' => '/etc/sysconfig/kafka', }) - opts[:env_template] = 'systemd/kafka.env.erb' opts[:source] = value_for_platform_family({ 'default' => 'systemd/default.erb' }) diff --git a/recipes/_configure.rb b/recipes/_configure.rb index 4d061ac6..19b35fad 100644 --- a/recipes/_configure.rb +++ b/recipes/_configure.rb @@ -35,11 +35,11 @@ end template kafka_init_opts[:env_path] do - source kafka_init_opts.fetch(:env_template, 'env.erb') + source 'env.erb' owner 'root' group 'root' mode '644' - variables(main_class: 'kafka.Kafka') + helpers(Kafka::EnvFile) if restart_on_configuration_change? notifies :create, 'ruby_block[coordinate-kafka-start]', :immediately end diff --git a/templates/default/env.erb b/templates/default/env.erb index 7ac393eb..3c7c65b8 100644 --- a/templates/default/env.erb +++ b/templates/default/env.erb @@ -1,14 +1,13 @@ -#!/bin/sh -export SCALA_VERSION="<%= node.kafka.scala_version %>" -export JMX_PORT="<%= node.kafka.jmx_port %>" +<%= render_variable('SCALA_VERSION', node.kafka.scala_version, export?) %> +<%= render_variable('JMX_PORT', node.kafka.jmx_port, export?) %> -export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:<%= node.kafka.config_dir %>/log4j.properties" -export KAFKA_HEAP_OPTS="<%= node.kafka.heap_opts %>" -export KAFKA_GC_LOG_OPTS="<%= node.kafka.gc_log_opts %>" -export KAFKA_OPTS="<%= node.kafka.generic_opts %>" -export KAFKA_JVM_PERFORMANCE_OPTS="<%= node.kafka.jvm_performance_opts %>" -export KAFKA_JMX_OPTS="<%= node.kafka.jmx_opts %>" +<%= render_variable('KAFKA_LOG4J_OPTS', sprintf('-Dlog4j.configuration=file:%s', ::File.join(node.kafka.config_dir, 'log4j.properties')), export?) %> +<%= render_variable('KAFKA_HEAP_OPTS', node.kafka.heap_opts, export?) %> +<%= render_variable('KAFKA_GC_LOG_OPTS', node.kafka.gc_log_opts, export?) %> +<%= render_variable('KAFKA_OPTS', node.kafka.generic_opts, export?) %> +<%= render_variable('KAFKA_JVM_PERFORMANCE_OPTS', node.kafka.jvm_performance_opts, export?) %> +<%= render_variable('KAFKA_JMX_OPTS', node.kafka.jmx_opts, export?) %> -KAFKA_RUN="<%= node.kafka.install_dir %>/bin/kafka-run-class.sh" -KAFKA_ARGS="<%= @main_class %>" -KAFKA_CONFIG="<%= node.kafka.config_dir %>/server.properties" +<%= render_variable('KAFKA_RUN', ::File.join(node.kafka.install_dir, 'bin', 'kafka-run-class.sh')) %> +<%= render_variable('KAFKA_ARGS', 'kafka.Kafka') %> +<%= render_variable('KAFKA_CONFIG', ::File.join(node.kafka.config_dir, 'server.properties')) %> diff --git a/templates/default/systemd/kafka.env.erb b/templates/default/systemd/kafka.env.erb deleted file mode 100644 index 00f40f61..00000000 --- a/templates/default/systemd/kafka.env.erb +++ /dev/null @@ -1,13 +0,0 @@ -SCALA_VERSION="<%= node.kafka.scala_version %>" -JMX_PORT="<%= node.kafka.jmx_port %>" - -KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:<%= node.kafka.config_dir %>/log4j.properties" -KAFKA_HEAP_OPTS="<%= node.kafka.heap_opts %>" -KAFKA_GC_LOG_OPTS="<%= node.kafka.gc_log_opts %>" -KAFKA_OPTS="<%= node.kafka.generic_opts %>" -KAFKA_JVM_PERFORMANCE_OPTS="<%= node.kafka.jvm_performance_opts %>" -KAFKA_JMX_OPTS="<%= node.kafka.jmx_opts %>" - -KAFKA_RUN="<%= node.kafka.install_dir %>/bin/kafka-run-class.sh" -KAFKA_ARGS="<%= @main_class %>" -KAFKA_CONFIG="<%= node.kafka.config_dir %>/server.properties" diff --git a/templates/default/sysv/debian.erb b/templates/default/sysv/debian.erb index 1aa62256..a66c02b0 100644 --- a/templates/default/sysv/debian.erb +++ b/templates/default/sysv/debian.erb @@ -20,7 +20,7 @@ PIDFILE=/var/run/$NAME.pid [ -f /lib/lsb/init-functions ] && . /lib/lsb/init-functions # Load additional configuration -[ -f /etc/default/$NAME ] && . /etc/default/$NAME +[ -f <%= @env_path %> ] && . <%= @env_path %> <%= render 'partials/check_running.erb', variables: {user: @user} -%> diff --git a/templates/default/sysv/default.erb b/templates/default/sysv/default.erb index 3e1027b8..236dfe21 100644 --- a/templates/default/sysv/default.erb +++ b/templates/default/sysv/default.erb @@ -19,7 +19,7 @@ RETVAL=0 [ -f /etc/sysconfig/network ] && . /etc/sysconfig/network # Load additional configuration -[ -f /etc/sysconfig/$NAME ] && . /etc/sysconfig/$NAME +[ -f <%= @env_path %> ] && . <%= @env_path %> # Check that networking is up [ "$NETWORKING" = "no" ] && exit $RETVAL diff --git a/templates/default/upstart/default.erb b/templates/default/upstart/default.erb index 6b7d96d1..85a2a937 100644 --- a/templates/default/upstart/default.erb +++ b/templates/default/upstart/default.erb @@ -13,7 +13,7 @@ limit nofile <%= @ulimit %> <%= @ulimit %> setuid <%= @user %> script - [ -f /etc/default/<%= @daemon_name %> ] && . /etc/default/<%= @daemon_name %> + [ -f <%= @env_path %> ] && . <%= @env_path %> exec $KAFKA_RUN $KAFKA_ARGS $KAFKA_CONFIG end script