summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2020-03-16 17:00:02 +0100
committerJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2020-04-23 17:33:45 +0200
commit7edfe2292c3c59a8e03e37574b89a00708ae1bf8 (patch)
tree472980b0adac31a6dbf80b1fc5f49a0af4c82e4f /apps
parentc9e9509846b85ce63f0588b937e7e01cdbd45df9 (diff)
downloadrabbitmq-server-git-7edfe2292c3c59a8e03e37574b89a00708ae1bf8.tar.gz
rabbit_prelaunch_conf: Always handle config. files with Cuttlefish
This has several benefits: 1. It simplifies the code, all configuration being handled by the same code path (no more condition on Erlang-term-based vs. Cuttlefish). `rabbit_config` shrinks quite a lot in the process. 2. We can use additional configuration files AND an Erlang-term-based configuration file. In other words, it is possible to use the same existing Erlang-term-based file and introduce Cuttlefish files when needed. It allows a user to run RabbitMQ with: RABBITMQ_CONFIG_FILE=/path/to/rabbitmq.config \ RABBITMQ_CONFIG_FILES=/path/to/conf.d/*.conf \ ./sbin/rabbitmq-server A developer can do the same with `make run-broker`: make run-broker \ RABBITMQ_CONFIG_FILES=/path/to/conf.d/*.conf In the example above, the main configuration file generated by rabbitmq-run.mk is an Erlang-term-based one. This is implemented by calling Cuttlefish with a (possibly empty) list of additional files and the Erlang-term-based file as the advanced configuration file. References #2180.
Diffstat (limited to 'apps')
-rw-r--r--apps/rabbitmq_prelaunch/src/rabbit_prelaunch_conf.erl63
1 files changed, 12 insertions, 51 deletions
diff --git a/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_conf.erl b/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_conf.erl
index 9ff4cf09d0..ece600b68e 100644
--- a/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_conf.erl
+++ b/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_conf.erl
@@ -26,29 +26,13 @@ setup(Context) ->
AdvancedConfigFile = find_actual_advanced_config_file(Context),
State = case find_actual_main_config_file(Context) of
{MainConfigFile, erlang} ->
- case AdditionalConfigFiles of
- [] ->
- ok;
- _ ->
- rabbit_log_prelaunch:notice(
- "The following additional configuration "
- "files are not loaded when the main "
- "configuration file uses the Erlang terms "
- "based format"),
- lists:foreach(
- fun(File) ->
- rabbit_log_prelaunch:notice(
- " - ~ts", [File])
- end,
- AdditionalConfigFiles)
- end,
- Config = load_erlang_term_based_config_file(
- MainConfigFile),
+ Config = load_cuttlefish_config_file(Context,
+ AdditionalConfigFiles,
+ MainConfigFile),
Apps = [App || {App, _} <- Config],
decrypt_config(Apps),
- #{config_type => erlang,
- config_files => [MainConfigFile],
- config_advanced_file => undefined};
+ #{config_files => AdditionalConfigFiles,
+ config_advanced_file => MainConfigFile};
{MainConfigFile, cuttlefish} ->
ConfigFiles = [MainConfigFile | AdditionalConfigFiles],
Config = load_cuttlefish_config_file(Context,
@@ -56,8 +40,7 @@ setup(Context) ->
AdvancedConfigFile),
Apps = [App || {App, _} <- Config],
decrypt_config(Apps),
- #{config_type => cuttlefish,
- config_files => ConfigFiles,
+ #{config_files => ConfigFiles,
config_advanced_file => AdvancedConfigFile};
undefined when AdditionalConfigFiles =/= [] ->
ConfigFiles = AdditionalConfigFiles,
@@ -66,23 +49,21 @@ setup(Context) ->
AdvancedConfigFile),
Apps = [App || {App, _} <- Config],
decrypt_config(Apps),
- #{config_type => cuttlefish,
- config_files => ConfigFiles,
+ #{config_files => ConfigFiles,
config_advanced_file => AdvancedConfigFile};
undefined when AdvancedConfigFile =/= undefined ->
rabbit_log_prelaunch:warning(
"Using RABBITMQ_ADVANCED_CONFIG_FILE: ~s",
[AdvancedConfigFile]),
- Config = load_erlang_term_based_config_file(
- AdvancedConfigFile),
+ Config = load_cuttlefish_config_file(Context,
+ AdditionalConfigFiles,
+ AdvancedConfigFile),
Apps = [App || {App, _} <- Config],
decrypt_config(Apps),
- #{config_type => erlang,
- config_files => [AdvancedConfigFile],
+ #{config_files => AdditionalConfigFiles,
config_advanced_file => AdvancedConfigFile};
undefined ->
- #{config_type => undefined,
- config_files => [],
+ #{config_files => [],
config_advanced_file => undefined}
end,
ok = override_with_hard_coded_critical_config(),
@@ -186,26 +167,6 @@ determine_config_format(File) ->
end
end.
-load_erlang_term_based_config_file(ConfigFile) ->
- rabbit_log_prelaunch:debug(
- "Loading configuration file \"~ts\" (Erlang terms based)", [ConfigFile]),
- case file:consult(ConfigFile) of
- {ok, [Config]} when is_list(Config) ->
- apply_erlang_term_based_config(Config),
- Config;
- {ok, OtherTerms} ->
- rabbit_log_prelaunch:error(
- "Failed to load configuration file \"~ts\", "
- "incorrect format: ~p",
- [ConfigFile, OtherTerms]),
- throw({error, failed_to_parse_configuration_file});
- {error, Reason} ->
- rabbit_log_prelaunch:error(
- "Failed to load configuration file \"~ts\": ~ts",
- [ConfigFile, file:format_error(Reason)]),
- throw({error, failed_to_read_configuration_file})
- end.
-
load_cuttlefish_config_file(Context,
ConfigFiles,
AdvancedConfigFile) ->