TT#37257 Improve installing of additional packages

Make a single list of all required packages.
For each package from the list check if it is installed or not.
Install all packages at once.
Remove custom source.list for these additional packages. Previously it
was used because GRML image and its default source.list were too old.
Now a new GRML is used so we have a vise-versa situation - deb.sipwise.com
contains older packages than default source.list so there is no sense to
use any custom locations and options.

Change-Id: I33239c255f5af666ca9bbead9d3a584de9335bb6
changes/40/22540/10
Mykola Malkov 7 years ago
parent 9b0cee7564
commit 45175b72c7

@ -94,6 +94,8 @@ SIPWISE_APT_KEY_PATH="/etc/apt/trusted.gpg.d/sipwise.gpg"
# overriden later, although since the checksum is the same we could use this URL # overriden later, although since the checksum is the same we could use this URL
# also for Pro/Carrier installations # also for Pro/Carrier installations
SIPWISE_APT_KEY_URL_PATH="/spce/sipwise.gpg" SIPWISE_APT_KEY_URL_PATH="/spce/sipwise.gpg"
ADDITINAL_PACKAGES=(git augeas-tools)
### helper functions {{{ ### helper functions {{{
get_deploy_status() { get_deploy_status() {
@ -254,43 +256,31 @@ is_package_installed() {
fi fi
} }
ensure_package_installed() { ensure_packages_installed() {
local pkg="$1" [[ -z "${ADDITINAL_PACKAGES[@]}" ]] && return 0
echo "Ensuring package installed: ${pkg}"
if is_package_installed "${pkg}"; then local install_packages
echo "Package '${pkg}' is already installed, nothing to do." install_packages=()
return 0 echo "Ensuring packages installed: ${ADDITINAL_PACKAGES[*]}"
else for pkg in "${ADDITINAL_PACKAGES[@]}"; do
echo "Package '${pkg}' is not installed, proceeding..." if is_package_installed "${pkg}"; then
fi echo "Package '${pkg}' is already installed, nothing to do."
else
# use temporary apt database for speed reasons echo "Package '${pkg}' is not installed, scheduling..."
local TMPDIR install_packages+=("${pkg}")
TMPDIR=$(mktemp -d) fi
mkdir -p "${TMPDIR}/etc/preferences.d" "${TMPDIR}/statedir/lists/partial" \ done
"${TMPDIR}/cachedir/archives/partial"
chown _apt "${TMPDIR}/cachedir/archives/partial"
echo "deb ${DEBIAN_URL}/debian/ ${DEBIAN_RELEASE} main contrib non-free" > \
"${TMPDIR}/etc/sources.list"
DEBIAN_FRONTEND='noninteractive' apt-get -o dir::cache="${TMPDIR}/cachedir" \
-o dir::state="${TMPDIR}/statedir" -o dir::etc="${TMPDIR}/etc" \
-o dir::etc::trustedparts="/etc/apt/trusted.gpg.d/" update
DEBIAN_FRONTEND='noninteractive' apt-get -o dir::cache="${TMPDIR}/cachedir" \ DEBIAN_FRONTEND='noninteractive' apt-get update
-o dir::etc="${TMPDIR}/etc" -o dir::state="${TMPDIR}/statedir" \ DEBIAN_FRONTEND='noninteractive' apt-get -y --no-install-recommends install "${install_packages[@]}"
-o dir::etc::trustedparts="/etc/apt/trusted.gpg.d/" \
-y --no-install-recommends install "${pkg}"
if is_package_installed "${pkg}"; then for pkg in "${install_packages[@]}"; do
echo "Package '${pkg}' was installed correctly." if is_package_installed "${pkg}"; then
return 0 echo "Package '${pkg}' was installed correctly."
else else
die "Error: Package '${pkg}' was not installed correctly, aborting." die "Error: Package '${pkg}' was not installed correctly, aborting."
fi fi
done
} }
# }}} # }}}
@ -669,20 +659,13 @@ done
set_deploy_status "installing_sipwise_keys" set_deploy_status "installing_sipwise_keys"
install_sipwise_key install_sipwise_key
ensure_packages_installed
if ! "$NGCP_INSTALLER" ; then if ! "$NGCP_INSTALLER" ; then
CARRIER_EDITION=false CARRIER_EDITION=false
PRO_EDITION=false PRO_EDITION=false
CE_EDITION=false CE_EDITION=false
unset ROLE unset ROLE
else
set_deploy_status "ensure_augtool_present"
if [ -x /usr/bin/augtool ] ; then
echo "/usr/bin/augtool is present, nothing to do"
else
ensure_package_installed "augeas-tools"
fi
fi fi
set_deploy_status "getconfig" set_deploy_status "getconfig"
@ -1874,7 +1857,6 @@ puppet_install_from_git () {
rmdir "${PUPPET_RESCUE_PATH}" rmdir "${PUPPET_RESCUE_PATH}"
echo "Cloning Puppet git repository from '${PUPPET_GIT_REPO}' to '${PUPPET_LOCAL_GIT}' (branch '${PUPPET_GIT_BRANCH}')" echo "Cloning Puppet git repository from '${PUPPET_GIT_REPO}' to '${PUPPET_LOCAL_GIT}' (branch '${PUPPET_GIT_BRANCH}')"
ensure_package_installed "git"
echo 'ssh -i ~/.ssh/id_rsa_r10k -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $*' > ssh echo 'ssh -i ~/.ssh/id_rsa_r10k -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $*' > ssh
chmod +x ssh chmod +x ssh
if ! GIT_SSH="${PWD}/ssh" git clone --depth 1 -b "${PUPPET_GIT_BRANCH}" "${PUPPET_GIT_REPO}" "${PUPPET_LOCAL_GIT}" ; then if ! GIT_SSH="${PWD}/ssh" git clone --depth 1 -b "${PUPPET_GIT_BRANCH}" "${PUPPET_GIT_REPO}" "${PUPPET_LOCAL_GIT}" ; then

Loading…
Cancel
Save