From 85dbb13c56702aae47a900f5ac91bdc629e97d6a Mon Sep 17 00:00:00 2001 From: Alex Vandiver Date: Tue, 23 Jun 2020 21:22:54 +0000 Subject: [PATCH] installer: Abstract out apt/yum divide into a variable. This check is done in several places, using a somewhat fragile `case` statement; move it into an explicit variable. --- scripts/lib/install | 132 +++++++++++++++++++++----------------------- 1 file changed, 64 insertions(+), 68 deletions(-) diff --git a/scripts/lib/install b/scripts/lib/install index 63aebda81d..a26e7e1277 100755 --- a/scripts/lib/install +++ b/scripts/lib/install @@ -115,6 +115,14 @@ export LANGUAGE="en_US.UTF-8" if [ -f /etc/os-release ]; then os_info="$(. /etc/os-release; printf '%s\n' "$ID" "$ID_LIKE" "$VERSION_ID" "$VERSION_CODENAME")" { read -r os_id; read -r os_id_like; read -r os_version_id; read -r os_version_codename || true; } <<< "$os_info" + case " $os_id $os_id_like " in + *' debian '*) + package_system="apt" + ;; + *' rhel '*) + package_system="yum" + ;; + esac fi case "$os_id$os_version_id" in @@ -169,15 +177,12 @@ if [ "$mem_kb" -lt 1860000 ]; then fi # Do package update, e.g. do `apt-get update` on Debian -case " $os_id $os_id_like " in - *' debian '*) - # setup-apt-repo does an `apt-get update` - "$ZULIP_PATH"/scripts/lib/setup-apt-repo - ;; - *' rhel '*) - "$ZULIP_PATH"/scripts/lib/setup-yum-repo - ;; -esac +if [ "$package_system" = apt ]; then + # setup-apt-repo does an `apt-get update` + "$ZULIP_PATH"/scripts/lib/setup-apt-repo +elif [ "$package_system" = yum ]; then + "$ZULIP_PATH"/scripts/lib/setup-yum-repo +fi # Check early for missing SSL certificates if [ "$PUPPET_CLASSES" = "zulip::voyager" ] && [ -z "$USE_CERTBOT""$SELF_SIGNED_CERT" ] && { ! [ -e "/etc/ssl/private/zulip.key" ] || ! [ -e "/etc/ssl/certs/zulip.combined-chain.crt" ]; }; then @@ -206,49 +211,46 @@ fi # don't run dist-upgrade in one click apps to make the # installation process more seamless. if [ -z "$NO_DIST_UPGRADE" ]; then - case " $os_id $os_id_like " in - *' debian '*) - apt-get -y dist-upgrade "${APT_OPTIONS[@]}" - ;; + if [ "$package_system" = apt ]; then + apt-get -y dist-upgrade "${APT_OPTIONS[@]}" + elif [ "$package_system" = yum ]; then # On CentOS, there is no need to do `yum -y upgrade` because `yum -y # update` already does the same thing. - esac + : + fi fi -case " $os_id $os_id_like " in - *' debian '*) - if [ "$os_id" = ubuntu ] && [ "$os_version_id" = 20.04 ]; then - PYTHON2="python2" - else - PYTHON2="python" - fi +if [ "$package_system" = apt ]; then + if [ "$os_id" = ubuntu ] && [ "$os_version_id" = 20.04 ]; then + PYTHON2="python2" + else + PYTHON2="python" + fi - if ! apt-get install -y \ - puppet git curl wget jq \ - "$PYTHON2" python3 python-six python3-six crudini \ - "${ADDITIONAL_PACKAGES[@]}"; then - set +x - echo -e '\033[0;31m' >&2 - echo "Installing packages failed; is network working and (on Ubuntu) the universe repository enabled?" >&2 - echo >&2 - echo -e '\033[0m' >&2 - exit 1 - fi - ;; - *' rhel '*) - if ! yum install -y \ - puppet git curl wget jq \ - python python3 python-six python3-six crudini \ - "${ADDITIONAL_PACKAGES[@]}"; then - set +x - echo -e '\033[0;31m' >&2 - echo "Installing packages failed; is network working?" >&2 - echo >&2 - echo -e '\033[0m' >&2 - exit 1 - fi - ;; -esac + if ! apt-get install -y \ + puppet git curl wget jq \ + "$PYTHON2" python3 python-six python3-six crudini \ + "${ADDITIONAL_PACKAGES[@]}"; then + set +x + echo -e '\033[0;31m' >&2 + echo "Installing packages failed; is network working and (on Ubuntu) the universe repository enabled?" >&2 + echo >&2 + echo -e '\033[0m' >&2 + exit 1 + fi +elif [ "$package_system" = yum ]; then + if ! yum install -y \ + puppet git curl wget jq \ + python python3 python-six python3-six crudini \ + "${ADDITIONAL_PACKAGES[@]}"; then + set +x + echo -e '\033[0;31m' >&2 + echo "Installing packages failed; is network working?" >&2 + echo >&2 + echo -e '\033[0m' >&2 + exit 1 + fi +fi if [ -n "$USE_CERTBOT" ]; then "$ZULIP_PATH"/scripts/setup/setup-certbot \ @@ -309,15 +311,13 @@ EOF fi if [ -e "/etc/init.d/postgresql" ]; then - case " $os_id $os_id_like " in - *' debian '*) - cat < /etc/zulip/zulip.conf fi @@ -340,14 +340,12 @@ esac "$ZULIP_PATH"/scripts/zulip-puppet-apply -f -case " $os_id $os_id_like " in - *' debian '*) - SUPERVISOR_CONF_DIR="/etc/supervisor/conf.d" - ;; - *' rhel '*) - SUPERVISOR_CONF_DIR="/etc/supervisord.d/conf.d" - ;; -esac +if [ "$package_system" = apt ]; then + SUPERVISOR_CONF_DIR="/etc/supervisor/conf.d" +elif [ "$package_system" = yum ]; then + SUPERVISOR_CONF_DIR="/etc/supervisord.d/conf.d" +fi + # Detect which features were selected for the below set +e [ -e "/etc/init.d/nginx" ]; has_nginx=$? @@ -369,14 +367,12 @@ if [ -n "$POSTGRES_MISSING_DICTIONARIES" ]; then fi # These server restarting bits should be moveable into puppet-land, ideally -case " $os_id $os_id_like " in - *' debian '*) - apt-get -y upgrade - ;; - *' rhel '*) - # No action is required because `yum update` already does upgrade. - ;; -esac +if [ "$package_system" = apt ]; then + apt-get -y upgrade +elif [ "$package_system" = yum ]; then + # No action is required because `yum update` already does upgrade. + : +fi if [ "$has_nginx" = 0 ]; then # Check nginx was configured properly now that we've installed it.