From da09dc27e8339d7d5865029a40be587a8fde8313 Mon Sep 17 00:00:00 2001 From: William Brafford Date: Fri, 14 Feb 2020 14:41:29 -0500 Subject: [PATCH] Always set default ES_PATH_CONF for package scriptlets (#51827) * Set default ES_PATH_CONF for package scriptlets Our packages use scriptlets to create or update the Elasticsearch keystore as necessary when installing or upgrading an Elasticsearch package. If these scriptlets don't work as expected, Elasticsearch may try and fail to create or upgrade the keystore at startup time. This will prevent Elasticsearch from starting up at all. These scriptlets use the Elasticsearch keystore command-line tools. Like most of our command-line tools, the keystore tools will by default get their value for ES_PATH_CONF from a system configuration file: /etc/sysconfig/elasticsearch for RPMs, /etc/default/elasticsearch for debian packages. Previously, if the user removed ES_PATH_CONF from that system configuration file (perhaps thinking that it is obsolete when the same variables is also defined in the systemd unit file), the keystore command-line tools would fail. Scriptlet errors do not seem to cause the installation to fail, and for RPMs the error message is easy to miss in command output. This commit adds a line of bash to scriptlets that will set ES_PATH_CONF to a default when ES_PATH_CONF is unset, rather than only when the system configuration file is missing. --- distribution/packages/src/common/env/elasticsearch | 1 + distribution/packages/src/common/scripts/postinst | 4 ++-- distribution/packages/src/common/scripts/postrm | 4 ++-- distribution/packages/src/common/scripts/posttrans | 4 ++-- distribution/packages/src/common/scripts/preinst | 4 ++-- distribution/packages/src/common/scripts/prerm | 4 ++-- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/distribution/packages/src/common/env/elasticsearch b/distribution/packages/src/common/env/elasticsearch index 76d9473b0fb5a..5e2b1eb23b23a 100644 --- a/distribution/packages/src/common/env/elasticsearch +++ b/distribution/packages/src/common/env/elasticsearch @@ -9,6 +9,7 @@ #JAVA_HOME= # Elasticsearch configuration directory +# Note: this setting will be shared with command-line tools ES_PATH_CONF=${path.conf} # Elasticsearch PID directory diff --git a/distribution/packages/src/common/scripts/postinst b/distribution/packages/src/common/scripts/postinst index d76b9ec763524..98170e122f1f6 100644 --- a/distribution/packages/src/common/scripts/postinst +++ b/distribution/packages/src/common/scripts/postinst @@ -11,10 +11,10 @@ # source the default env file if [ -f "${path.env}" ]; then . "${path.env}" -else - ES_PATH_CONF="${path.conf}" fi +export ES_PATH_CONF=${ES_PATH_CONF:-${path.conf}} + IS_UPGRADE=false case "$1" in diff --git a/distribution/packages/src/common/scripts/postrm b/distribution/packages/src/common/scripts/postrm index 0b77069603baf..9bbdcc78eda08 100644 --- a/distribution/packages/src/common/scripts/postrm +++ b/distribution/packages/src/common/scripts/postrm @@ -12,10 +12,10 @@ # source the default env file if [ -f "${path.env}" ]; then . "${path.env}" -else - ES_PATH_CONF="${path.conf}" fi +export ES_PATH_CONF=${ES_PATH_CONF:-${path.conf}} + REMOVE_DIRS=false REMOVE_JVM_OPTIONS_DIRECTORY=false REMOVE_USER_AND_GROUP=false diff --git a/distribution/packages/src/common/scripts/posttrans b/distribution/packages/src/common/scripts/posttrans index 7b072ee260209..d62c24ac34e85 100644 --- a/distribution/packages/src/common/scripts/posttrans +++ b/distribution/packages/src/common/scripts/posttrans @@ -1,10 +1,10 @@ # source the default env file if [ -f "${path.env}" ]; then . "${path.env}" -else - ES_PATH_CONF="${path.conf}" fi +export ES_PATH_CONF=${ES_PATH_CONF:-${path.conf}} + if [ ! -f "${ES_PATH_CONF}"/elasticsearch.keystore ]; then /usr/share/elasticsearch/bin/elasticsearch-keystore create chown root:elasticsearch "${ES_PATH_CONF}"/elasticsearch.keystore diff --git a/distribution/packages/src/common/scripts/preinst b/distribution/packages/src/common/scripts/preinst index c3e15b632aaf7..82eb8458be005 100644 --- a/distribution/packages/src/common/scripts/preinst +++ b/distribution/packages/src/common/scripts/preinst @@ -18,10 +18,10 @@ err_exit() { # source the default env file if [ -f "${path.env}" ]; then . "${path.env}" -else - ES_PATH_CONF="${path.conf}" fi +export ES_PATH_CONF=${ES_PATH_CONF:-${path.conf}} + case "$1" in # Debian #################################################### diff --git a/distribution/packages/src/common/scripts/prerm b/distribution/packages/src/common/scripts/prerm index ff25345963b2d..df88d8eae4b5c 100644 --- a/distribution/packages/src/common/scripts/prerm +++ b/distribution/packages/src/common/scripts/prerm @@ -12,10 +12,10 @@ # source the default env file if [ -f "${path.env}" ]; then . "${path.env}" -else - ES_PATH_CONF="${path.conf}" fi +export ES_PATH_CONF=${ES_PATH_CONF:-${path.conf}} + STOP_REQUIRED=false REMOVE_SERVICE=false