summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2021-08-11 15:29:34 +0200
committerJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2021-08-11 15:50:40 +0200
commit46b8321bd9fd1933c5b4fae75ffcc5abb72634c7 (patch)
tree9186a224dc11a00a7d6196d662c31f66eb60e10f
parent33c6cbf239be00eb280bb630d4c8e92ca900e17c (diff)
downloadrabbitmq-server-git-46b8321bd9fd1933c5b4fae75ffcc5abb72634c7.tar.gz
Add support for $RABBITMQ_DEFAULT_{USER,PASS,VHOST} env vars
They are the equivalent of the `default_{user,pass,vhost}` configuration settings. Each set environment variable will take precedence over its configuration file counterpart. Fixes docker-library/rabbitmq#508.
-rw-r--r--deps/rabbit/src/rabbit.erl19
1 files changed, 16 insertions, 3 deletions
diff --git a/deps/rabbit/src/rabbit.erl b/deps/rabbit/src/rabbit.erl
index c5f023b22b..23719c517b 100644
--- a/deps/rabbit/src/rabbit.erl
+++ b/deps/rabbit/src/rabbit.erl
@@ -7,6 +7,7 @@
-module(rabbit).
+-include_lib("eunit/include/eunit.hrl").
-include_lib("kernel/include/logger.hrl").
-include_lib("rabbit_common/include/logging.hrl").
@@ -1047,10 +1048,10 @@ maybe_insert_default_data() ->
end.
insert_default_data() ->
- {ok, DefaultUser} = application:get_env(default_user),
- {ok, DefaultPass} = application:get_env(default_pass),
+ DefaultUser = get_default_data_param(default_user),
+ DefaultPass = get_default_data_param(default_pass),
{ok, DefaultTags} = application:get_env(default_user_tags),
- {ok, DefaultVHost} = application:get_env(default_vhost),
+ DefaultVHost = get_default_data_param(default_vhost),
{ok, [DefaultConfigurePerm, DefaultWritePerm, DefaultReadPerm]} =
application:get_env(default_permissions),
@@ -1077,6 +1078,18 @@ insert_default_data() ->
?INTERNAL_USER),
ok.
+get_default_data_param(Param) ->
+ #{var_origins := Origins} = Context = rabbit_prelaunch:get_context(),
+ case maps:get(Param, Origins, default) of
+ environment ->
+ Value = maps:get(Param, Context),
+ ?assert(is_binary(Value)),
+ Value;
+ default ->
+ {ok, Value} = application:get_env(Param),
+ Value
+ end.
+
%%---------------------------------------------------------------------------
%% logging