Newer
Older
# Lukas Krupcik, lukas.krupcik@vsb.cz
#
# if without any parameters
if [[ $# -eq 0 ]]; then
printf "\e[31m
./install.sh\e[0m ... create and build singularity image
-\e[33mi\e[0m OS (\e[33mCentOS\e[0m, \e[33mUbuntu\e[0m)
-\e[33mv\e[0m Version OS (CentOS 6, CentOS 7, CentOS 8, Ubuntu latest, Ubuntu 18, Debian latest, Fedora latest)
case $opt in
i)
IMAGE="$OPTARG"
;;
v)
VERSION="$OPTARG"
;;
o)
OMPI="$OPTARG"
;;
\?)
exit "Invalid option: -$OPTARG"
;;
esac
done
printf "\033c"
# load config
. CONFIG
TEST_CONFIG="TRUE"
# test empty value
if [ -z "$SINGULARITY_BIN_PATH" ] || [ -z "$IMAGE_PATH" ] || [ -z "$MODULEFILE_PATH" ] || [ -z "$USER_IMAGE" ]; then
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
TEST_CONFIG="FALSE"
echo "CONFIG test empty value ERROR"
fi
# test other value
if [ ! -d "$SINGULARITY_BIN_PATH" ]; then
TEST_CONFIG="FALSE"
echo "CONFIG test SINGULARITY BIN PATH ERROR"
fi
if [ ! -d "$IMAGE_PATH" ]; then
TEST_CONFIG="FALSE"
echo "CONFIG test IMAGE PATH ERROR"
fi
if [ ! -d "$MODULEFILE_PATH" ]; then
TEST_CONFIG="FALSE"
echo "CONFIG test MODULEFILE PATH ERROR"
fi
if [ -z "$USER_IMAGE" ]; then
TEST_CONFIG="FALSE"
echo "CONFIG test USER IMAGE ERROR"
fi
echo -n "Check CONFIG ........................... ["
if [ "$TEST_CONFIG" == "TRUE" ]; then
echo -e "\e[32mOK\e[0m]"
else
echo -e "\e[31mERROR\e[0m]"
exit 1
fi
if [ -z "$IMAGE" ]; then
echo -e "Please, specify singularity image (-i \e[31mCentOS\e[0m, \e[31mUbuntu\e[0m, \e[31mDebian\e[0m, \e[31mFedora\e[0m,)"
elif [ "$IMAGE" == "CentOS" ] || [ "$IMAGE" == "Debian" ] || [ "$IMAGE" == "Ubuntu" ] || [ "$IMAGE" == "Debian" ] || [ "$IMAGE" == "Fedora" ]; then
echo -e "Image .................................. [\e[32mOK\e[0m]"
else
echo -e "Image .................................. [\e[31mERROR\e[0m]"
echo -e "Unknowm OS, exiting..."
exit 1
fi
if [ -z "$VERSION" ]; then
echo -e "Please, specify OS version (-v CentOS \e[31m6\e[0m or CentOS \e[31m7\e[0m, CentOS \e[31m8\e[0m, Ubuntu \e[31mlatest\e[0m, Debian \e[31mlatest\e[0m), Fedora \e[31mlatest\e[0m))"
elif ([ "$IMAGE" == "CentOS" ] && [ "$VERSION" == "6" ]) || ([ "$IMAGE" == "CentOS" ] && [ "$VERSION" == "7" ]) || ([ "$IMAGE" == "CentOS" ] && [ "$VERSION" == "8" ]) || ([ "$IMAGE" == "Ubuntu" ] && [ "$VERSION" == "latest" ]) || ([ "$IMAGE" == "Ubuntu" ] && [ "$VERSION" == "18" ]) || ([ "$IMAGE" == "Debian" ] && [ "$VERSION" == "latest" ]) || ([ "$IMAGE" == "Fedora" ] && [ "$VERSION" == "latest" ]); then
echo -e "Version ................................ [\e[32mOK\e[0m]"
else
echo -e "Version ................................ [\e[31mERROR\e[0m]"
echo -e "Unknowm OS version, exiting..."
exit 1
fi
if [ -z "$OMPI" ]; then
OMPI=
echo -e "OpenMPI ................................ [\e[33mNO\e[0m]"
OMPI="OpenMPI/3.1.4-GCC-8.3.0-2.32"
echo -e "OpenMPI 3.1.4 .......................... [\e[32mOK\e[0m]"
fi
USER=$(whoami)
if [ ! "$USER" == "root" ]; then
echo -e "ROOT ................................... [\e[31mFALSE\e[0m]"
echo "SORRY, you must ROOT!!!"
exit 1
else
echo -e "ROOT ................................... [\e[32mOK\e[0m]"
fi
echo -e "\e[32mCreate & Build singularity image\e[0m ($IMAGE-$VERSION-$TYPE)"
if [ "$IMAGE" == "CentOS" ]; then
elif [ "$VERSION" == "18" ]; then
BOOTSTRAP="UBUNTU1804"
else
echo "ERROR version ubuntu"
exit 1
fi
elif [ "$IMAGE" == "Debian" ]; then
BOOTSTRAP="DEBIANLATEST"
elif [ "$IMAGE" == "Fedora" ]; then
BOOTSTRAP="FEDORALATEST"
if [ -f image.sif ]; then
rm image.sif || exit 1
fi
echo "$SINGULARITY_BIN_PATH"
export PATH="$PATH:$SINGULARITY_BIN_PATH"
singularity build image.sif "$BOOTSTRAP" || CHECK_STATUS="FALSE" && CHECK_STATUS="TRUE"
if [ "$CHECK_STATUS" == "FALSE" ]; then
echo -e "Build image ...................................................................................................... [\e[31mFALSE\e[0m]"
exit 1
elif [ "$CHECK_STATUS" == "TRUE" ]; then
echo -e "Build image ...................................................................................................... [\e[32mOK\e[0m]"
else
echo -e "Build image ...................................................................................................... [\e[31mERROR\e[0m]"
exit 1
fi
for i in `ls -t "$IMAGE_PATH/$IMAGE/$VERSION/" | grep sif`;
mkdir -p "$IMAGE_PATH/$IMAGE/$VERSION/" && chmod 0755 $IMAGE_PATH/$IMAGE/$VERSION/ && chown $USER_IMAGE:$USER_IMAGE $IMAGE_PATH/$IMAGE/$VERSION/ -R
echo -n "Copy image to $IMAGE_PATH/$IMAGE/$VERSION/$IMAGE-${VERSION}_${DATE}.sif .......................................... ["
mv image.sif "$IMAGE_PATH/$IMAGE/$VERSION/$IMAGE-${VERSION}_${DATE}.sif" || ( echo -e "\e[31mFALSE\e[0m]" && exit 1 ) && echo -e "\e[32mOK\e[0m]"
echo -n "chown $USER_IMAGE:$USER_IMAGE $IMAGE_PATH/$IMAGE/$VERSION/$IMAGE-${VERSION}_${DATE}.sif .............................. ["
chown "$USER_IMAGE":"$USER_IMAGE" "$IMAGE_PATH/$IMAGE/$VERSION/$IMAGE-${VERSION}_${DATE}.sif" || ( echo -e "\e[31mFALSE\e[0m]" && exit 1 ) && echo -e "\e[32mOK\e[0m]"
echo -n "chmod 0775 $IMAGE_PATH/$IMAGE/$VERSION/$IMAGE-${VERSION}_${DATE}.sif ............................................. ["
chmod 0775 "$IMAGE_PATH/$IMAGE/$VERSION$TYPE/$IMAGE-${VERSION}_${DATE}.sif" || ( echo -e "\e[31mFALSE\e[0m]" && exit 1 ) && echo -e "\e[32mOK\e[0m]"
echo -n "Copy bootstrap to $IMAGE_PATH/$IMAGE/$VERSION/$IMAGE-$VERSION-Bootstrap ............................................... ["
cp "$BOOTSTRAP" "$IMAGE_PATH/$IMAGE/$VERSION/$IMAGE-$VERSION-Bootstrap" || ( echo -e "\e[31mFALSE\e[0m]" && exit 1 ) && echo -e "\e[32mOK\e[0m]"
echo -n "chown $USER_IMAGE:$USER_IMAGE $IMAGE_PATH/$IMAGE/$VERSION/$IMAGE-$VERSION-Bootstrap ....................................... ["
chown "$USER_IMAGE":"$USER_IMAGE" "$IMAGE_PATH/$IMAGE/$VERSION/$IMAGE-$VERSION-Bootstrap" || ( echo -e "\e[31mFALSE\e[0m]" && exit 1 ) && echo -e "\e[32mOK\e[0m]"
echo -n "chmod 0664 $IMAGE_PATH/$IMAGE/$VERSION/$IMAGE-$VERSION-Bootstrap ...................................................... ["
chmod 0664 "$IMAGE_PATH/$IMAGE/$VERSION/$IMAGE-$VERSION-Bootstrap" || ( echo -e "\e[31mFALSE\e[0m]" && exit 1 ) && echo -e "\e[32mOK\e[0m]"
cd ./modulefile_template
echo -n "Modulefile for image ............................................................................................. ["
./create_modulefile.sh "$IMAGE" "$VERSION" "$OMPI" || (echo -e "\e[31mFALSE\e[0m]" && exit 1) && echo -e "\e[32mOK\e[0m]"
echo -e "\e[32mSuccess\e[0m (module \e[33m$IMAGE/$VERSION\e[0m)"
echo -e "\e[31mFail (image.sif not exists...)\e[0m]"