isen-docker-farm/generate.sh

104 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
usage() {
echo "ROOT ???"
exit
}
cd $(dirname $0)
Liste=./data/liste
ListeMachinaUser=./data/Machina
ID=2000
tID=2
TMP=$(dirname $0)/tmp/
TMP=/tmp
[[ ! -d $TMP ]] && mkdir $TMP
[[ $(whoami) != "root" ]] && usage
cp docker-compose.yml.template.head ${TMP}/docker-compose.yml
rm -f ${TMP}/hostname
[[ "$1" == "del" ]] && read -p "ARE YOU SURE BIATCH ?????? (yes/no) : " ans
for User in $(cat ${Liste} | grep ^[A-Z][A-Z].*\ [A-Z][a-z] | sed "s#[a-z]#|#g" | cut -d"|" -f1 | sed "s#-# #g"| sed "s# \+#-#g"| iconv -f utf8 -t ascii//TRANSLIT )
do
echo -e "USER : $User"
for Machina in $(cat ${ListeMachinaUser})
do
tID=$(($tID+1))
if [[ "$1" == "mount" ]]
then
mount ./data/students/part/${User}_${Machina} ./data/students/part/${User}_${Machina}_part
#if [[ ! -z $(mount | grep ${User}_${Machina}) ]] && [[ "$1" == "del" ]]
elif [[ "$1" == "del" ]]
then
echo -e "\tDEL : $Machina [10.10.10.${tID}]"
for var in $(docker-compose ps | grep -v NAME | awk '{print $1}' | grep ${User}_${Machina}); do docker stop $var;docker rm $var; done &> /dev/null
umount ./data/students/part/${User}_${Machina}_part
rm -Rf ./data/students/part/${User}_${Machina}_part
rm ./data/students/part/${User}_${Machina}
else
if [[ ! -f ./data/students/part/${User}_${Machina} ]]
then
echo -e "\t GEN : $Machina [10.10.10.${tID}]"
touch ./data/students/part/${User}_${Machina}
mkdir ./data/students/part/${User}_${Machina}_part
truncate -s 200M ./data/students/part/${User}_${Machina} &> /dev/null
mke2fs -t ext4 -F ./data/students/part/${User}_${Machina} &> /dev/null
mount ./data/students/part/${User}_${Machina} ./data/students/part/${User}_${Machina}_part
cp -Rf ./data/skel/. ./data/students/part/${User}_${Machina}_part/
mkdir ./data/students/part/${User}_${Machina}_part/.gen/
mv ./data/students/part/${User}_${Machina}_part/backup.sh ./data/students/part/${User}_${Machina}_part/.gen/
echo "host : ${User^^}" | figlet -f small > ${TMP}/motd
#echo "---------" | figlet >> /${TMP}/motd
echo "Isen 2022 - MTN"| figlet -f small >> ${TMP}/motd
cp -rfp ./data/ssh/ ./data/students/part/${User}_${Machina}_part/.gen/.ssh
cp -rfp ./data/ssh/ ./data/students/part/${User}_${Machina}_part/.ssh
cp ${TMP}/motd ./data/students/part/${User}_${Machina}_part/.gen/
mkdir -p ./data/students/part/${User}_${Machina}_part/Notes/{C01,C02,C03,C04}/
[[ -z $(echo $User | grep -iE "astier|lefebvre|catanese") ]] && rm -f ./data/students/part/${User}_${Machina}_part/.gen/.ssh/id* ./data/students/part/${User}_${Machina}_part/.ssh/id*
chown -Rf 1000:1000 ./data/students/part/${User}_${Machina}_part/
echo "10.10.10.${tID} ${User,,}"-${Machina} >> ${TMP}/hostname
echo "
${User}_${Machina}:
image: isensshbase
hostname: ${User,,}-${Machina}
mem_limit: 256m
mem_reservation: 128M
cpus: 0.5
storage_opt:
size: '2G'
volumes:
- './data/students/part/${User}_${Machina}_part:/home/isen'
networks:
vpcbr:
ipv4_address: 10.10.10.${tID}
" >> ${TMP}/docker-compose.yml
else
mount ./data/students/part/${User}_${Machina} ./data/students/part/${User}_${Machina}_part
fi
fi
done
done
cat docker-compose.yml.template.footer >> ${TMP}/docker-compose.yml
cp ${TMP}/docker-compose.yml .
for Dir in $( ls -1 ./data/students/part/ | grep _part)
do
cp ${TMP}/hostname ./data/students/part/${Dir}/.gen
done
chmod 777 ./docker-compose.yml