Philippe Caseiro
5985b56e46
On fait télécharger l'image iso directement par ONE. Pour l'instant pour garder l'esprit on attend la fin de l'initialisation pour rendre la main, mais on pourrais très bien laisser l'ajout se faire en tache de fond ref #17430 @1h (Contribution Cadoles)
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
|
|
|