Skip to content
This repository has been archived by the owner on Sep 21, 2021. It is now read-only.

Commit

Permalink
[rabbitmq_notifications][rabbitmq] Move lock to beginning, and quote …
Browse files Browse the repository at this point in the history
…strings

The lock needs to be acquired before bootstrap, as it will also start a new rabbitmq process
The squote doesn't seem to work as intended (my'string -> 'my'string').
  • Loading branch information
fwiesel committed Jan 26, 2018
1 parent 96caf94 commit 1477d05
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 34 deletions.
41 changes: 22 additions & 19 deletions rabbitmq/templates/bin/_rabbitmq-start.tpl
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
#!/usr/bin/env bash
{{- $envAll := . }}
set -e

. /container.init/common.sh
LOCKFILE=/var/lib/rabbitmq/rabbitmq-server.lock
echo "Acquiring RabbitMQ lock ${LOCKFILE}"
exec 9>${LOCKFILE}
/usr/bin/flock -n 9

function upsert_user {
rabbitmqctl add_user "$1" "$2" || rabbitmqctl change_password "$1" "$2"
Expand All @@ -10,29 +14,28 @@ function upsert_user {
}

function bootstrap {
#Not especially proud of this, but it works (unlike the environment variable approach in the docs)
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq

/etc/init.d/rabbitmq-server start

rabbitmq-plugins enable rabbitmq_tracing
rabbitmqctl trace_on

upsert_user {{ print .Values.global.rabbitmq_default_user .Values.global.user_suffix | squote }} {{ .Values.global.rabbitmq_default_pass | default ( tuple . .Values.global.rabbitmq_default_user "rabbitmq" | include "svc.password_for_user_and_service" ) | squote }}
upsert_user {{ print .Values.global.rabbitmq_admin_user .Values.global.user_suffix | squote }} {{ .Values.global.rabbitmq_admin_pass | default ( tuple . .Values.global.rabbitmq_admin_user "rabbitmq" | include "svc.password_for_user_and_service" ) | squote }} administrator
upsert_user {{ .Values.global.rabbitmq_metrics_user | squote }} {{ .Values.global.rabbitmq_metrics_pass | default ( tuple . .Values.global.rabbitmq_metrics_user "rabbitmq" | include "svc.password_for_user_and_service" ) | squote }} monitoring

rabbitmqctl change_password guest {{ .Values.global.rabbitmq_default_pass | default ( tuple . "guest" "rabbitmq" | include "svc.password_for_user_and_service" ) | squote }} || true
rabbitmqctl set_user_tags guest monitoring || true
/etc/init.d/rabbitmq-server stop
#Not especially proud of this, but it works (unlike the environment variable approach in the docs)
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq

/etc/init.d/rabbitmq-server start || ( cat /var/log/rabbitmq/startup_* && exit 1 )

{{- if .Values.debug }}
rabbitmq-plugins enable rabbitmq_tracing
rabbitmqctl trace_on
{{- end }}
upsert_user {{ print .Values.global.rabbitmq_default_user .Values.global.user_suffix | replace "$" "\\$" | quote }} {{ .Values.global.rabbitmq_default_pass | default ( tuple . .Values.global.rabbitmq_default_user "rabbitmq" | include "svc.password_for_user_and_service" ) | replace "$" "\\$" | quote }}
upsert_user {{ print .Values.global.rabbitmq_admin_user .Values.global.user_suffix | replace "$" "\\$" | quote }} {{ .Values.global.rabbitmq_admin_pass | default ( tuple . .Values.global.rabbitmq_admin_user "rabbitmq" | include "svc.password_for_user_and_service" ) | replace "$" "\\$" | quote }} administrator
upsert_user {{ .Values.global.rabbitmq_metrics_user | replace "$" "\\$" | quote }} {{ .Values.global.rabbitmq_metrics_pass | default ( tuple . .Values.global.rabbitmq_metrics_user "rabbitmq" | include "svc.password_for_user_and_service" ) | replace "$" "\\$" | quote }} monitoring

rabbitmqctl change_password guest {{ .Values.global.rabbitmq_default_pass | default ( tuple . "guest" "rabbitmq" | include "svc.password_for_user_and_service" ) | replace "$" "\\$" | quote }} || true
rabbitmqctl set_user_tags guest monitoring || true
/etc/init.d/rabbitmq-server stop
}


function start_application {
exec rabbitmq-server
exec gosu rabbitmq rabbitmq-server
}

bootstrap
start_application


31 changes: 16 additions & 15 deletions rabbitmq_notifications/templates/bin/_rabbitmq-start.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,42 @@
{{- $envAll := . }}
set -e

LOCKFILE=/var/lib/rabbitmq/rabbitmq-server.lock
echo "Acquiring RabbitMQ lock ${LOCKFILE}"
exec 9>${LOCKFILE}
/usr/bin/flock -n 9

function upsert_user {
rabbitmqctl add_user "$1" "$2" || rabbitmqctl change_password "$1" "$2"
rabbitmqctl set_permissions "$1" ".*" ".*" ".*"
[ -z "$3" ] || rabbitmqctl set_user_tags "$1" "$3"
}

function bootstrap {
#Not especially proud of this, but it works (unlike the environment variable approach in the docs)
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq
#Not especially proud of this, but it works (unlike the environment variable approach in the docs)
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq

/etc/init.d/rabbitmq-server start
/etc/init.d/rabbitmq-server start || ( cat /var/log/rabbitmq/startup_* && exit 1 )

{{- if .Values.debug }}
rabbitmq-plugins enable rabbitmq_tracing
rabbitmqctl trace_on
rabbitmq-plugins enable rabbitmq_tracing
rabbitmqctl trace_on
{{- end }}
{{ range $user, $values := .Values.users }}
upsert_user {{ print $values.user $envAll.Values.global.user_suffix | squote }} {{ default ( tuple $envAll $values.user (include "fullname" $envAll) | include "svc.password_for_user_and_service" ) $values.password | squote }}
upsert_user {{ print $values.user $envAll.Values.global.user_suffix | replace "$" "\\$" | quote }} {{ default ( tuple $envAll $values.user (include "fullname" $envAll) | include "svc.password_for_user_and_service" ) $values.password | replace "$" "\\$" | quote }}
{{- end }}
{{- if .Values.metrics.enabled }}
upsert_user {{ .Values.metrics.user | squote }} {{ default ( tuple . .Values.metrics.user (include "fullname" . ) | include "svc.password_for_fixed_user_and_service" ) .Values.metrics.password | squote }} monitoring
upsert_user {{ .Values.metrics.user | replace "$" "\\$" | quote }} {{ default ( tuple . .Values.metrics.user (include "fullname" . ) | include "svc.password_for_fixed_user_and_service" ) .Values.metrics.password | replace "$" "\\$" | quote }} monitoring
{{- end }}

rabbitmqctl change_password guest {{ .Values.users.default.password | squote }} || true
rabbitmqctl set_user_tags guest monitoring || true
/etc/init.d/rabbitmq-server stop
rabbitmqctl change_password guest {{ .Values.users.default.password | replace "$" "\\$" | quote }} || true
rabbitmqctl set_user_tags guest monitoring || true
/etc/init.d/rabbitmq-server stop
}


function start_application {
echo "Starting RabbitMQ with lock /var/lib/rabbitmq/rabbitmq-server.lock"
LOCKFILE=/var/lib/rabbitmq/rabbitmq-server.lock
exec 9>${LOCKFILE}
/usr/bin/flock -n 9
exec gosu rabbitmq rabbitmq-server
exec gosu rabbitmq rabbitmq-server
}

bootstrap
Expand Down

0 comments on commit 1477d05

Please sign in to comment.