Skip to content

Commit 499a5f3

Browse files
authored
Merge pull request #548 from lbetz/enhancement/547
Add support for tls-key-file-pass
2 parents 767ef25 + 0aaeb4b commit 499a5f3

File tree

8 files changed

+64
-0
lines changed

8 files changed

+64
-0
lines changed

REFERENCE.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ The following parameters are available in the `redis` class:
184184
* [`tls_port`](#-redis--tls_port)
185185
* [`tls_cert_file`](#-redis--tls_cert_file)
186186
* [`tls_key_file`](#-redis--tls_key_file)
187+
* [`tls_key_file_pass`](#-redis--tls_key_file_pass)
187188
* [`tls_ca_cert_file`](#-redis--tls_ca_cert_file)
188189
* [`tls_ca_cert_dir`](#-redis--tls_ca_cert_dir)
189190
* [`tls_auth_clients`](#-redis--tls_auth_clients)
@@ -1043,6 +1044,14 @@ Specify which privaye key file to use for TLS connections.
10431044

10441045
Default value: `undef`
10451046

1047+
##### <a name="-redis--tls_key_file_pass"></a>`tls_key_file_pass`
1048+
1049+
Data type: `Optional[Variant[String[1], Sensitive[String[1]], Deferred]]`
1050+
1051+
Passphrase to encrypt the private key file.
1052+
1053+
Default value: `undef`
1054+
10461055
##### <a name="-redis--tls_ca_cert_file"></a>`tls_ca_cert_file`
10471056

10481057
Data type: `Optional[Stdlib::Absolutepath]`
@@ -1546,6 +1555,7 @@ The following parameters are available in the `redis::sentinel` class:
15461555
* [`service_enable`](#-redis--sentinel--service_enable)
15471556
* [`tls_cert_file`](#-redis--sentinel--tls_cert_file)
15481557
* [`tls_key_file`](#-redis--sentinel--tls_key_file)
1558+
* [`tls_key_file_pass`](#-redis--sentinel--tls_key_file_pass)
15491559
* [`tls_ca_cert_file`](#-redis--sentinel--tls_ca_cert_file)
15501560
* [`tls_ca_cert_dir`](#-redis--sentinel--tls_ca_cert_dir)
15511561
* [`tls_auth_clients`](#-redis--sentinel--tls_auth_clients)
@@ -1834,6 +1844,14 @@ Specify which privaye key file to use for TLS connections.
18341844

18351845
Default value: `undef`
18361846

1847+
##### <a name="-redis--sentinel--tls_key_file_pass"></a>`tls_key_file_pass`
1848+
1849+
Data type: `Optional[Variant[String[1], Sensitive[String[1]], Deferred]]`
1850+
1851+
Passphrase to encrypt the private key file.
1852+
1853+
Default value: `undef`
1854+
18371855
##### <a name="-redis--sentinel--tls_ca_cert_file"></a>`tls_ca_cert_file`
18381856

18391857
Data type: `Optional[Stdlib::Absolutepath]`
@@ -2031,6 +2049,7 @@ The following parameters are available in the `redis::instance` defined type:
20312049
* [`tls_port`](#-redis--instance--tls_port)
20322050
* [`tls_cert_file`](#-redis--instance--tls_cert_file)
20332051
* [`tls_key_file`](#-redis--instance--tls_key_file)
2052+
* [`tls_key_file_pass`](#-redis--instance--tls_key_file_pass)
20342053
* [`tls_ca_cert_file`](#-redis--instance--tls_ca_cert_file)
20352054
* [`tls_ca_cert_dir`](#-redis--instance--tls_ca_cert_dir)
20362055
* [`tls_auth_clients`](#-redis--instance--tls_auth_clients)
@@ -2742,6 +2761,14 @@ Specify which privaye key file to use for TLS connections.
27422761

27432762
Default value: `$redis::tls_key_file`
27442763

2764+
##### <a name="-redis--instance--tls_key_file_pass"></a>`tls_key_file_pass`
2765+
2766+
Data type: `Optional[Variant[String[1], Sensitive[String[1]], Deferred]]`
2767+
2768+
Passphrase to encrypt the private key file.
2769+
2770+
Default value: `$redis::tls_key_file_pass`
2771+
27452772
##### <a name="-redis--instance--tls_ca_cert_file"></a>`tls_ca_cert_file`
27462773

27472774
Data type: `Optional[Stdlib::Absolutepath]`

manifests/init.pp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,8 @@
231231
# Specify which X.509 certificate file to use for TLS connections.
232232
# @param tls_key_file
233233
# Specify which privaye key file to use for TLS connections.
234+
# @param tls_key_file_pass
235+
# Passphrase to encrypt the private key file.
234236
# @param tls_ca_cert_file
235237
# Specify which X.509 CA certificate(s) bundle file to use.
236238
# @param tls_ca_cert_dir
@@ -453,6 +455,7 @@
453455
Optional[Stdlib::Port] $tls_port = undef,
454456
Optional[Stdlib::Absolutepath] $tls_cert_file = undef,
455457
Optional[Stdlib::Absolutepath] $tls_key_file = undef,
458+
Optional[Variant[String[1], Sensitive[String[1]], Deferred]] $tls_key_file_pass = undef,
456459
Optional[Stdlib::Absolutepath] $tls_ca_cert_file = undef,
457460
Optional[Stdlib::Absolutepath] $tls_ca_cert_dir = undef,
458461
Enum['yes', 'no', 'optional'] $tls_auth_clients = 'no',

manifests/instance.pp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,8 @@
185185
# Specify which X.509 certificate file to use for TLS connections.
186186
# @param tls_key_file
187187
# Specify which privaye key file to use for TLS connections.
188+
# @param tls_key_file_pass
189+
# Passphrase to encrypt the private key file.
188190
# @param tls_ca_cert_file
189191
# Specify which X.509 CA certificate(s) bundle file to use.
190192
# @param tls_ca_cert_dir
@@ -368,6 +370,7 @@
368370
Optional[Stdlib::Port] $tls_port = $redis::tls_port,
369371
Optional[Stdlib::Absolutepath] $tls_cert_file = $redis::tls_cert_file,
370372
Optional[Stdlib::Absolutepath] $tls_key_file = $redis::tls_key_file,
373+
Optional[Variant[String[1], Sensitive[String[1]], Deferred]] $tls_key_file_pass = $redis::tls_key_file_pass,
371374
Optional[Stdlib::Absolutepath] $tls_ca_cert_file = $redis::tls_ca_cert_file,
372375
Optional[Stdlib::Absolutepath] $tls_ca_cert_dir = $redis::tls_ca_cert_dir,
373376
Optional[String[1]] $tls_ciphers = $redis::tls_ciphers,
@@ -578,6 +581,7 @@
578581
tls_port => $tls_port,
579582
tls_cert_file => $tls_cert_file,
580583
tls_key_file => $tls_key_file,
584+
tls_key_file_pass => $tls_key_file_pass,
581585
tls_ca_cert_file => $tls_ca_cert_file,
582586
tls_ca_cert_dir => $tls_ca_cert_dir,
583587
tls_ciphers => $tls_ciphers,

manifests/sentinel.pp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@
111111
# @param tls_key_file
112112
# Specify which privaye key file to use for TLS connections.
113113
#
114+
# @param tls_key_file_pass
115+
# Passphrase to encrypt the private key file.
116+
#
114117
# @param tls_ca_cert_file
115118
# Specify which X.509 CA certificate(s) bundle file to use.
116119
#
@@ -191,6 +194,7 @@
191194
String[1] $service_user = 'redis',
192195
Optional[Stdlib::Absolutepath] $tls_cert_file = undef,
193196
Optional[Stdlib::Absolutepath] $tls_key_file = undef,
197+
Optional[Variant[String[1], Sensitive[String[1]], Deferred]] $tls_key_file_pass = undef,
194198
Optional[Stdlib::Absolutepath] $tls_ca_cert_file = undef,
195199
Optional[Stdlib::Absolutepath] $tls_ca_cert_dir = undef,
196200
Enum['yes', 'no', 'optional'] $tls_auth_clients = 'no',

spec/classes/redis_sentinel_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ class { 'redis':
126126
sentinel_announce_port: 1234,
127127
tls_cert_file: '/etc/pki/cert.pem',
128128
tls_key_file: '/etc/pki/privkey.pem',
129+
tls_key_file_pass: '_VALUE_',
129130
tls_ca_cert_file: '/etc/pki/cacert.pem',
130131
tls_ca_cert_dir: '/etc/pki/cacerts',
131132
tls_auth_clients: 'yes',
@@ -163,6 +164,7 @@ class { 'redis':
163164
164165
tls-cert-file /etc/pki/cert.pem
165166
tls-key-file /etc/pki/privkey.pem
167+
tls-key-file-pass _VALUE_
166168
tls-ca-cert-file /etc/pki/cacert.pem
167169
tls-ca-cert-dir /etc/pki/cacerts
168170
tls-auth-clients yes

spec/classes/redis_spec.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1442,6 +1442,7 @@ class { 'redis':
14421442
tls_port: 7777,
14431443
tls_cert_file: '/etc/ssl/certs/dummy.crt',
14441444
tls_key_file: '/etc/ssl/private/dummy.key',
1445+
tls_key_file_pass: '_VALUE_',
14451446
tls_ca_cert_file: '/etc/ssl/certs/ca_bundle.pem',
14461447
tls_ca_cert_dir: '/etc/ssl/some/dir',
14471448
tls_auth_clients: 'no',
@@ -1459,6 +1460,7 @@ class { 'redis':
14591460
with_content(%r{^tls-port 7777$}).
14601461
with_content(%r{^tls-cert-file\s*/etc/ssl/certs/dummy\.crt$}).
14611462
with_content(%r{^tls-key-file\s*/etc/ssl/private/dummy\.key$}).
1463+
with_content(%r{^tls-key-file-pass\s*_VALUE_$}).
14621464
with_content(%r{^tls-ca-cert-file\s*/etc/ssl/certs/ca_bundle\.pem$}).
14631465
with_content(%r{^tls-ca-cert-dir\s*/etc/ssl/some/dir$}).
14641466
with_content(%r{^tls-auth-clients\s*no$}).
@@ -1471,6 +1473,21 @@ class { 'redis':
14711473
end
14721474
end
14731475

1476+
describe 'with TLS key file pass is set sensitive' do
1477+
let(:params) do
1478+
{
1479+
tls_port: 7777,
1480+
tls_key_file_pass: sensitive('_VALUE_'),
1481+
}
1482+
end
1483+
1484+
it {
1485+
is_expected.to contain_file(config_file_orig).with(
1486+
'content' => sensitive(%r{tls-key-file-pass.*_VALUE_})
1487+
)
1488+
}
1489+
end
1490+
14741491
describe 'with parameter manage_service_file' do
14751492
let(:params) do
14761493
{

templates/redis-sentinel.conf.erb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ requirepass <%= @requirepass %>
5050

5151
tls-cert-file <%= @tls_cert_file %>
5252
tls-key-file <%= @tls_key_file %>
53+
<% if @tls_key_file_pass -%>
54+
tls-key-file-pass <%= @tls_key_file_pass %>
55+
<% end -%>
5356
<% if @tls_ca_cert_file -%>
5457
tls-ca-cert-file <%= @tls_ca_cert_file %>
5558
<% end -%>

templates/redis.conf.epp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
Optional[Stdlib::Port] $tls_port,
7676
Optional[Stdlib::Absolutepath] $tls_cert_file,
7777
Optional[Stdlib::Absolutepath] $tls_key_file,
78+
Optional[Variant[String[1], Sensitive[String[1]]]] $tls_key_file_pass,
7879
Optional[Stdlib::Absolutepath] $tls_ca_cert_file,
7980
Optional[Stdlib::Absolutepath] $tls_ca_cert_dir,
8081
Optional[String[1]] $tls_ciphers,
@@ -177,6 +178,9 @@ tls-port <%= $tls_port %>
177178
# PEM formatted.
178179
tls-cert-file <%= $tls_cert_file %>
179180
tls-key-file <%= $tls_key_file %>
181+
<% if $tls_key_file_pass { -%>
182+
tls-key-file-pass <%= $tls_key_file_pass %>
183+
<% } -%>
180184

181185
# Configure a CA certificate(s) bundle or directory to authenticate TLS/SSL
182186
# clients and peers. Redis requires an explicit configuration of at least one

0 commit comments

Comments
 (0)