#!/bin/bash # This script is loaded on the target machine, which is running tests # Purpose: install mongod and shell from packages set -o xtrace set -o errexit function apply_selinux_policy() { echo "==== Applying SELinux policy now" rm -rf mongodb-selinux git clone https://github.com/mongodb/mongodb-selinux cd mongodb-selinux make sudo make install } # on evergreen images /tmp is usually linked to /data/tmp, which interferes # with selinux, as it does not recognize it as tmp_t domain if [ -L /tmp ]; then sudo --non-interactive rm /tmp sudo --non-interactive mkdir /tmp sudo --non-interactive systemctl start tmp.mount fi # selinux policy should work both when applied before and after install # we will randomly apply it before or after installation is completed SEORDER="$(($RANDOM % 2))" if [ "$SEORDER" == "0" ]; then apply_selinux_policy fi pkg="$(find "$HOME"/repo -name 'mongodb-*-server-*.x86_64.rpm' | tee /dev/stderr)" if ! sudo --non-interactive rpm --install --verbose --verbose --hash --nodeps "$pkg"; then if [ "$?" -gt "1" ]; then exit 1; fi # exit code 1 is OK fi if [ "$SEORDER" == "1" ]; then apply_selinux_policy fi # install packages needed by check_has_tag.py PYTHON=/opt/mongodbtoolchain/v4/bin/python3 if [[ (-f "$PYTHON" || -L "$PYTHON") && -x "$PYTHON" ]]; then echo "==== Found python3 in $PYTHON" $PYTHON -m pip install pyyaml else echo "==== Could not find $PYTHON; needed by SELinux tests" exit 1 fi