Skip to content

Commit be062fd

Browse files
fix elasticsearch/user: allow ensure=absent without password
1 parent af30ef0 commit be062fd

File tree

3 files changed

+53
-16
lines changed

3 files changed

+53
-16
lines changed

REFERENCE.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2179,13 +2179,15 @@ Default value: `'present'`
21792179

21802180
##### <a name="-elasticsearch--user--password"></a>`password`
21812181

2182-
Data type: `String`
2182+
Data type: `Optional[String]`
21832183

21842184
Password for the given user. A plaintext password will be managed
21852185
with the esusers utility and requires a refresh to update, while
21862186
a hashed password from the esusers utility will be managed manually
21872187
in the uses file.
21882188

2189+
Default value: `undef`
2190+
21892191
##### <a name="-elasticsearch--user--roles"></a>`roles`
21902192

21912193
Data type: `Array`

manifests/user.pp

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,36 @@
2323
# @author Gavin Williams <[email protected]>
2424
#
2525
define elasticsearch::user (
26-
String $password,
27-
Enum['absent', 'present'] $ensure = 'present',
28-
Array $roles = [],
26+
Optional[String] $password = undef,
27+
Enum['absent', 'present'] $ensure = 'present',
28+
Array $roles = [],
2929
) {
30-
if $password =~ /^\$2a\$/ {
31-
elasticsearch_user_file { $name:
32-
ensure => $ensure,
33-
configdir => $elasticsearch::configdir,
34-
hashed_password => $password,
35-
before => Elasticsearch_user_roles[$name],
36-
}
37-
} else {
30+
if $ensure == 'absent' {
3831
elasticsearch_user { $name:
39-
ensure => $ensure,
32+
ensure => 'absent',
4033
configdir => $elasticsearch::configdir,
41-
password => $password,
42-
before => Elasticsearch_user_roles[$name],
4334
}
4435
}
45-
36+
else {
37+
if $password == undef {
38+
fail('elasticsearch::user: password must be provided when ensure => present')
39+
}
40+
if $password =~ /^\$2a\$/ {
41+
elasticsearch_user_file { $name:
42+
ensure => present,
43+
configdir => $elasticsearch::configdir,
44+
hashed_password => $password,
45+
before => Elasticsearch_user_roles[$name],
46+
}
47+
} else {
48+
elasticsearch_user { $name:
49+
ensure => present,
50+
configdir => $elasticsearch::configdir,
51+
password => $password,
52+
before => Elasticsearch_user_roles[$name],
53+
}
54+
}
55+
}
4656
elasticsearch_user_roles { $name:
4757
ensure => $ensure,
4858
roles => $roles,

spec/defines/007_elasticsearch_user_spec.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,31 @@ class { 'elasticsearch': }
8686

8787
include_examples 'class', :systemd
8888
end
89+
90+
context "with ensure => 'absent' and no password" do
91+
let(:params) do
92+
{
93+
ensure: 'absent',
94+
roles: []
95+
}
96+
end
97+
98+
it { is_expected.to compile }
99+
100+
it do
101+
expect(subject).to contain_elasticsearch_user('elastic').with(
102+
'ensure' => 'absent',
103+
'configdir' => '/etc/elasticsearch'
104+
)
105+
end
106+
107+
it do
108+
expect(subject).to contain_elasticsearch_user_roles('elastic').with(
109+
'ensure' => 'absent',
110+
'roles' => []
111+
)
112+
end
113+
end
89114
end
90115
end
91116
end

0 commit comments

Comments
 (0)