151 lines
3.8 KiB
Bash
Executable File
151 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
[ $(CreoleGet hapy_init_master) == non ] && exit 0
|
|
|
|
function error()
|
|
{
|
|
MSG=${1}
|
|
echo "[ERROR][${MSG}]"
|
|
exit 1
|
|
}
|
|
|
|
function get_user_home()
|
|
{
|
|
HOMEDIR=$(getent passwd ${1} | cut -d ':' -f 6)
|
|
echo ${HOMEDIR}
|
|
}
|
|
|
|
function get_one_auth()
|
|
{
|
|
CMD="cat"
|
|
HOME=$(get_user_home oneadmin)
|
|
FILE="${HOME}/.one/one_auth"
|
|
${CMD} ${FILE}
|
|
}
|
|
|
|
function runOneCmd()
|
|
{
|
|
local cmd=${1}
|
|
local opt=${2}
|
|
local auth=$(get_one_auth)
|
|
|
|
$cmd ${opt} --user ${auth%:*} --password ${auth#*:}
|
|
return ${?}
|
|
}
|
|
|
|
DISKSIZE=$(CreoleGet hapy_init_master_disk_size)
|
|
DISKNAME="DSK-${DISKSIZE}-Go"
|
|
DISKDESC="Disque vide de ${DISKSIZE} Go"
|
|
|
|
VERSIONISO=$(CreoleGet hapy_init_master_iso_version)
|
|
MAJORVERSION=${VERSIONISO:0:3}
|
|
ISONAME="ISO-Eole-${VERSIONISO}-amd64"
|
|
ISODESC="Image ISO EOLE Stable ${VERSIONISO} 64 bits"
|
|
ISOURL="http://eole.ac-dijon.fr/pub/iso/EOLE-${MAJORVERSION}/${VERSIONISO}/eole-${VERSIONISO}-alternate-amd64.iso"
|
|
|
|
TMPLNAME="InstallEole-${VERSIONISO}-amd64"
|
|
TMPLDESC="Modèle de VM permettant d'installer un module EOLE ${VERSIONISO} 64 bits (non persistente)"
|
|
|
|
#echo "########### suppr ${DISKNAME} ###############"
|
|
#oneimage delete ${DISKNAME}
|
|
#echo
|
|
#echo "########### suppr ${ISONAME} ###################"
|
|
#oneimage delete ${ISONAME}
|
|
#echo
|
|
#echo "########### suppr ${TMPLNAME} ###################"
|
|
#onetemplate delete ${TMPLNAME}
|
|
#echo
|
|
|
|
#*****************************************************
|
|
# DISQUE VIDE
|
|
#*****************************************************
|
|
if ! runOneCmd "oneimage" "show ${DISKNAME}" &>/dev/null
|
|
then
|
|
echo "***** Création de ${DISKNAME} *****"
|
|
|
|
## Attention oneimage create --datastore ne fonctionne pas dans runOneCmd ...
|
|
auth=$(get_one_auth)
|
|
oneimage create --datastore $(CreoleGet one_ds_image_name) \
|
|
--name ${DISKNAME} --type DATABLOCK --description "${DISKDESC}" \
|
|
--size $((${DISKSIZE}*1024)) --prefix vd --driver qcow2 --user ${auth%:*} --password ${auth#*:}
|
|
|
|
runOneCmd "oneimage" "chtype ${DISKNAME} OS"
|
|
else
|
|
echo "***** ${DISKNAME} existe déjà *****"
|
|
fi
|
|
echo
|
|
|
|
#*****************************************************
|
|
# Image ISO EOLE Latest Stable
|
|
#*****************************************************
|
|
if ! runOneCmd "oneimage" "show ${ISONAME}" &>/dev/null
|
|
then
|
|
echo -ne "***** Création de l'image ${ISONAME} *****\n\n"
|
|
|
|
FILE=$(mktemp)
|
|
cat > ${FILE} <<EOF
|
|
NAME="${ISONAME}"
|
|
TYPE="CDROM"
|
|
DESCRIPTION="${ISODESC}"
|
|
DEV_PREFIX="hd"
|
|
PATH="${ISOURL}"
|
|
PERSISTENT="No"
|
|
EOF
|
|
runOneCmd "oneimage" "create -d $(CreoleGet one_ds_iso_name) ${FILE}"
|
|
/bin/rm -f ${FILE}
|
|
|
|
spin='-\|/'
|
|
i=0
|
|
while :
|
|
do
|
|
imgState=$(runOneCmd "oneimage" "show ${ISONAME}" | awk '{if ($1 == "STATE") {print $3}}')
|
|
if [[ ${imgState} == "lock" ]]
|
|
then
|
|
i=$(( (i+1) %4 ))
|
|
printf "\rInitialisation en cours, merci de patienter [${spin:$i:1}] "
|
|
sleep 2
|
|
else
|
|
printf "\r Création terminée, l'image a le statut : ${imgState}\n"
|
|
break
|
|
fi
|
|
done
|
|
rm -f "/tmp/eole-${VERSIONISO}-alternate-amd64.iso"
|
|
else
|
|
echo "***** ${ISONAME} existe déjà *****"
|
|
fi
|
|
echo
|
|
|
|
|
|
#*****************************************************
|
|
# Template EOLEBASE
|
|
#*****************************************************
|
|
if ! onetemplate show "${TMPLNAME}" &>/dev/null
|
|
then
|
|
echo "***** Création de ${TMPLNAME} *****"
|
|
FILE=$(mktemp)
|
|
cat > ${FILE} <<EOF
|
|
NAME="${TMPLNAME}"
|
|
DESCRIPTION="${TMPLDESC}"
|
|
INPUT=[BUS="usb",TYPE="tablet"]
|
|
CPU="0.2"
|
|
DISK=[DEV_PREFIX="vd",IMAGE_UNAME="oneadmin",IMAGE="${DISKNAME}",DRIVER="qcow2"]
|
|
DISK=[DEV_PREFIX="hd",IMAGE_UNAME="oneadmin",IMAGE="${ISONAME}",DRIVER="raw"]
|
|
FEATURES=[ACPI="yes",PAE="no",LOCALTIME="yes"]
|
|
VCPU="1"
|
|
GRAPHICS=[LISTEN="0.0.0.0",TYPE="vnc",KEYMAP="fr"]
|
|
OS = [ ARCH = "x86_64", BOOT = "disk0,disk1" ]
|
|
MEMORY="1024"
|
|
EOF
|
|
|
|
|
|
#NIC=[MODEL="virtio",NETWORK="CR_eole"]
|
|
runOneCmd "onetemplate" "create ${FILE}"
|
|
|
|
/bin/rm -f ${FILE}
|
|
else
|
|
echo "***** ${TMPLNAME} existe déjà *****"
|
|
fi
|
|
echo
|
|
exit 0
|
|
|