Skip to content

Commit

Permalink
Merge pull request #1159 from phaedriel/jvm_options_d
Browse files Browse the repository at this point in the history
Use jvm.options.d folder on ES 7.7.0+
  • Loading branch information
bastelfreak committed Apr 17, 2022
2 parents 1e667ce + 8c239a3 commit 140b615
Show file tree
Hide file tree
Showing 4 changed files with 108 additions and 11 deletions.
32 changes: 25 additions & 7 deletions manifests/config.pp
Original file line number Diff line number Diff line change
Expand Up @@ -177,13 +177,31 @@
mode => '0440',
}

# Add any additional JVM options
$elasticsearch::jvm_options.each |String $jvm_option| {
file_line { "jvm_option_${jvm_option}":
ensure => present,
path => "${elasticsearch::configdir}/jvm.options",
line => $jvm_option,
notify => $elasticsearch::_notify_service,
if ($elasticsearch::version != false and versioncmp($elasticsearch::version, '7.7.0') >= 0) {
# https://www.elastic.co/guide/en/elasticsearch/reference/master/advanced-configuration.html#set-jvm-options
# https://github.com/elastic/elasticsearch/pull/51882
# >> "Do not modify the root jvm.options file. Use files in jvm.options.d/ instead."
$_epp_hash = {
sorted_jvm_options => sort(unique($elasticsearch::jvm_options)),
}
file { "${elasticsearch::configdir}/jvm.options.d/jvm.options":
ensure => 'file',
content => epp("${module_name}/etc/elasticsearch/jvm.options.d/jvm.options.epp", $_epp_hash),
owner => $elasticsearch::elasticsearch_user,
group => $elasticsearch::elasticsearch_group,
mode => '0640',
notify => $elasticsearch::_notify_service,
}
}
else {
# Add any additional JVM options
$elasticsearch::jvm_options.each |String $jvm_option| {
file_line { "jvm_option_${jvm_option}":
ensure => present,
path => "${elasticsearch::configdir}/jvm.options",
line => $jvm_option,
notify => $elasticsearch::_notify_service,
}
}
}

Expand Down
43 changes: 39 additions & 4 deletions spec/classes/000_elasticsearch_init_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -412,15 +412,16 @@
}
end

describe 'setting jvm_options' do
describe 'setting jvm_options before version 7.7.0' do
jvm_options = [
'-Xms16g',
'-Xmx16g'
]

let(:params) do
default_params.merge(
jvm_options: jvm_options
jvm_options: jvm_options,
version: '7.0.0'
)
end

Expand All @@ -436,6 +437,25 @@
end
end

describe 'setting jvm_options after version 7.7.0' do
jvm_options = [
'-Xms16g',
'-Xmx16g'
]

let(:params) do
default_params.merge(
jvm_options: jvm_options,
version: '7.7.0'
)
end

it {
expect(subject).to contain_file('/etc/elasticsearch/jvm.options.d/jvm.options').
with(ensure: 'file')
}
end

context 'with restart_on_change => true' do
let(:params) do
default_params.merge(
Expand All @@ -450,10 +470,11 @@
}
end

describe 'setting jvm_options triggers restart' do
describe 'setting jvm_options triggers restart before version 7.7.0' do
let(:params) do
super().merge(
jvm_options: ['-Xmx16g']
jvm_options: ['-Xmx16g'],
version: '7.0.0'
)
end

Expand All @@ -462,6 +483,20 @@
that_notifies('Service[elasticsearch]')
}
end

describe 'setting jvm_options triggers restart after version 7.7.0' do
let(:params) do
super().merge(
jvm_options: ['-Xmx16g'],
version: '7.7.0'
)
end

it {
expect(subject).to contain_file('/etc/elasticsearch/jvm.options.d/jvm.options').
that_notifies('Service[elasticsearch]')
}
end
end

# This check helps catch dependency cycles.
Expand Down
40 changes: 40 additions & 0 deletions spec/templates/002_jvm.options.erb_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# frozen_string_literal: true

require 'spec_helper'

describe 'jvm.options.epp' do
let :harness do
TemplateHarness.new(
'templates/etc/elasticsearch/jvm.options.d/jvm.options.epp'
)
end

it 'render the same string each time' do
harness.set(
'@_sorted_jvm_options', [
'-Xms2g',
'-Xmx2g'
]
)

first_render = harness.run
second_render = harness.run

expect(first_render).to eq(second_render)
end

it 'test content' do
harness.set(
'@_sorted_jvm_options', [
'-Xms2g',
'-Xmx2g'
]
)

expect(harness.run).to eq(%(
### MANAGED BY PUPPET ###
-Xms2g
-Xmx2g
).config)
end
end
4 changes: 4 additions & 0 deletions templates/etc/elasticsearch/jvm.options.d/jvm.options.epp
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
### MANAGED BY PUPPET ###
<% $sorted_jvm_options.each |$jvm_option| { -%>
<%= $jvm_option %>
<% } -%>

0 comments on commit 140b615

Please sign in to comment.