Skip to content

Commit 6941947

Browse files
committed
Make gitlab-redis-cli work when running behind SSL
Changelog: fixed Signed-off-by: Balasankar "Balu" C <[email protected]>
1 parent 3577087 commit 6941947

File tree

3 files changed

+64
-3
lines changed

3 files changed

+64
-3
lines changed

config/software/gitlab-redis-cli.rb

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@
4141
echo "$1" 2>& 1
4242
}
4343
44+
set_tls_params()
45+
{
46+
REDIS_PARAMS="${REDIS_PARAMS} -p ${redis_tls_port} --tls"
47+
if [ "${redis_tls_auth_clients}" = "yes" ]; then
48+
REDIS_PARAMS="${REDIS_PARAMS} --cacertdir ${redis_tls_cacert_dir} \
49+
--cacert ${redis_tls_cacert_file} \
50+
--cert ${redis_tls_cert_file} \
51+
--key ${redis_tls_key_file}"
52+
fi
53+
}
54+
4455
gitlab_redis_cli_rc='/opt/gitlab/etc/gitlab-redis-cli-rc'
4556
4657
if ! [ -f ${gitlab_redis_cli_rc} ] || ! [ -r ${gitlab_redis_cli_rc} ] ; then
@@ -52,10 +63,16 @@
5263
5364
. "${gitlab_redis_cli_rc}"
5465
66+
5567
if [ -e "${redis_socket}" ]; then
56-
REDIS_PARAMS="-s ${redis_socket}"
68+
REDIS_PARAMS="-s ${redis_socket}"
5769
else
58-
REDIS_PARAMS="-h ${redis_host} -p ${redis_port}"
70+
REDIS_PARAMS="-h ${redis_host}"
71+
if ! [ "${redis_port}" = "0" ]; then
72+
REDIS_PARAMS="${REDIS_PARAMS} -p ${redis_port}"
73+
elif ! [ "${redis_tls_port}" = "0" ]; then
74+
set_tls_params
75+
fi
5976
fi
6077
6178
REDISCLI_AUTH="$(awk '/^requirepass /{
@@ -66,7 +83,7 @@
6683
6784
6885
if [ -n "${REDISCLI_AUTH}" ]; then
69-
export REDISCLI_AUTH
86+
export REDISCLI_AUTH
7087
fi
7188
7289
exec /opt/gitlab/embedded/bin/redis-cli $REDIS_PARAMS "$@"
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
redis_dir='<%= node['redis']['dir'] %>'
22
redis_host='<%= node['redis']['bind'] %>'
33
redis_port='<%= node['redis']['port'] %>'
4+
redis_tls_port='<%= node['redis']['tls_port'] %>'
5+
redis_tls_auth_clients='<%= node['redis']['tls_auth_clients'] %>'
6+
redis_tls_cacert_file='<%= node['redis']['tls_ca_cert_file'] %>'
7+
redis_tls_cacert_dir='<%= node['redis']['tls_ca_cert_dir'] %>'
8+
redis_tls_cert_file='<%= node['redis']['tls_cert_file'] %>'
9+
redis_tls_key_file='<%= node['redis']['tls_key_file'] %>'
410
redis_socket='<%= node['redis']['unixsocket'] if node['redis']['unixsocket'] %>'

spec/chef/cookbooks/redis/recipes/redis_spec.rb

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@
1414
redis_dir='/var/opt/gitlab/redis'
1515
redis_host='127.0.0.1'
1616
redis_port='0'
17+
redis_tls_port=''
18+
redis_tls_auth_clients='optional'
19+
redis_tls_cacert_file='/opt/gitlab/embedded/ssl/certs/cacert.pem'
20+
redis_tls_cacert_dir='/opt/gitlab/embedded/ssl/certs/'
21+
redis_tls_cert_file=''
22+
redis_tls_key_file=''
1723
redis_socket='/var/opt/gitlab/redis/redis.socket'
1824
EOF
1925
end
@@ -206,6 +212,12 @@
206212
redis_dir='/var/opt/gitlab/redis'
207213
redis_host='1.2.3.4'
208214
redis_port='6370'
215+
redis_tls_port=''
216+
redis_tls_auth_clients='optional'
217+
redis_tls_cacert_file='/opt/gitlab/embedded/ssl/certs/cacert.pem'
218+
redis_tls_cacert_dir='/opt/gitlab/embedded/ssl/certs/'
219+
redis_tls_cert_file=''
220+
redis_tls_key_file=''
209221
redis_socket=''
210222
EOF
211223
end
@@ -245,6 +257,12 @@
245257
redis_dir='/var/opt/gitlab/redis'
246258
redis_host='1.2.3.4'
247259
redis_port='6370'
260+
redis_tls_port=''
261+
redis_tls_auth_clients='optional'
262+
redis_tls_cacert_file='/opt/gitlab/embedded/ssl/certs/cacert.pem'
263+
redis_tls_cacert_dir='/opt/gitlab/embedded/ssl/certs/'
264+
redis_tls_cert_file=''
265+
redis_tls_key_file=''
248266
redis_socket=''
249267
EOF
250268
end
@@ -348,6 +366,21 @@
348366
end
349367

350368
context 'with tls settings specified' do
369+
let(:gitlab_redis_cli_rc) do
370+
<<-EOF
371+
redis_dir='/var/opt/gitlab/redis'
372+
redis_host='127.0.0.1'
373+
redis_port='0'
374+
redis_tls_port='6380'
375+
redis_tls_auth_clients='no'
376+
redis_tls_cacert_file='/etc/gitlab/ssl/redis-ca.crt'
377+
redis_tls_cacert_dir='/opt/gitlab/embedded/ssl/certs'
378+
redis_tls_cert_file='/etc/gitlab/ssl/redis.crt'
379+
redis_tls_key_file='/etc/gitlab/ssl/redis.key'
380+
redis_socket=''
381+
EOF
382+
end
383+
351384
before do
352385
stub_gitlab_rb(
353386
redis: {
@@ -392,6 +425,11 @@
392425
expect(content).to match(%r{^tls-session-cache-timeout 120$})
393426
}
394427
end
428+
429+
it 'creates gitlab-redis-cli-rc' do
430+
expect(chef_run).to render_file('/opt/gitlab/etc/gitlab-redis-cli-rc')
431+
.with_content(gitlab_redis_cli_rc)
432+
end
395433
end
396434

397435
context 'log directory and runit group' do

0 commit comments

Comments
 (0)