-
Lukáš Krupčík authored
modified: install/CENTOS7LATESTINTEL modified: install/CENTOS8LATEST modified: install/CONFIG modified: install/install.sh deleted: install/CENTOS6LATEST
Lukáš Krupčík authoredmodified: install/CENTOS7LATESTINTEL modified: install/CENTOS8LATEST modified: install/CONFIG modified: install/install.sh deleted: install/CENTOS6LATEST
install.sh 7.10 KiB
#!/bin/bash
#
# Copyright (C) 2017-2020 IT4Innovations
# 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 7, CentOS 8, Ubuntu latest, Ubuntu 18, Debian latest, Fedora latest)
-\e[33mo\e[0m OpenMPI module
Example:
\e[33m ./install.sh -i CentOS -v 7777777\e[0m
"
echo ""
exit 0
fi
# parse the arguments
while getopts ":i:v:o:" opt; do
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
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,)"
exit 1
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[31m7\e[0m, CentOS \e[31m8\e[0m, Ubuntu \e[31mlatest\e[0m, Debian \e[31mlatest\e[0m), Fedora \e[31mlatest\e[0m))"
exit 1
elif ([ "$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]"
else
OMPI="OpenMPI/4.1.2-GCC-11.2.0"
echo -e "OpenMPI/4.1.2-GCC-11.2.0 ............... [\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
if [ "$VERSION" == "8" ]; then
BOOTSTRAP="CENTOS8LATEST"
else
BOOTSTRAP="CENTOS7LATEST"
fi
elif [ "$IMAGE" == "Ubuntu" ]; then
if [ "$VERSION" == "latest" ]; then
BOOTSTRAP="UBUNTULATEST"
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"
fi
DATE=$(date +%Y%m%d%H%M%S)
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"
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`;
do
if [ "$STATE" == "True" ]; then
rm "$IMAGE_PATH/$IMAGE/$VERSION/$i"
fi
done
if [ -f "image.sif" ]; then
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)"
exit 0
else
echo -e "\e[31mFail (image.sif not exists...)\e[0m]"
exit 1
fi
exit 0