Philippe Caseiro
78a27b4fdd
Ajouter la possibilité de créer une grappe haute disponibilité entre plusieurs Hâpy (https://docs.opennebula.org/5.6/advanced_components/ha/index.html) Pré-requis : Les datastores doivent être partagés entre tous les Hâpy via NFS ou tout autre système de fichiers accécibles de manière concurrente entre les serveurs (Glusterfs, Ceph, DRBD). Pour faire ce développement nous nous sommes basés sur eole-glusterfs qui permet de créer une grappe glusterfs (https://dev-eole.ac-dijon.fr/projects/eole-glusterfs)
85 lines
2.2 KiB
Bash
85 lines
2.2 KiB
Bash
#!/bin/bash
|
|
|
|
#
|
|
# AIM : Manage Opennebula database update
|
|
#
|
|
#
|
|
|
|
. /usr/lib/eole/ihm.sh
|
|
script="$1"
|
|
|
|
function clean_backups()
|
|
{
|
|
file=${1}
|
|
ls ${file}_* > /dev/null 2>&1
|
|
if [ $? = 0 ]; then
|
|
bcks=($(ls ${file}_*))
|
|
nbbck=$(expr ${#bcks[@]} - 2)
|
|
|
|
|
|
if [[ ${nbbck} -gt 1 ]]
|
|
then
|
|
EchoGras "Cleaning up old backups !"
|
|
for idx in `seq 0 ${nbbck}`
|
|
do
|
|
rm -f ${bcks[${idx}]}
|
|
done
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function updateDB()
|
|
{
|
|
local dbfile='/var/lib/one/one.db'
|
|
local cmd="onedb"
|
|
local res=0
|
|
|
|
if [[ -f ${dbfile} ]]
|
|
then
|
|
if [ $(CreoleGet one_database_type) = "mysql" ]; then
|
|
if [ $(CreoleGet one_ha_server_index 0) = "0" ]; then
|
|
HOST=$(CreoleGet one_database_host)
|
|
DB=$(CreoleGet one_database_name)
|
|
USER=$(CreoleGet one_database_user)
|
|
PASS=$(CreoleGet one_database_pass)
|
|
$cmd upgrade -f -u $USER -p $PASS -d $DB -S $HOST
|
|
fi
|
|
else
|
|
$cmd upgrade -f -s ${dbfile}
|
|
fi
|
|
res=${?}
|
|
clean_backups ${dbfile}
|
|
return ${res}
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
function to_mysql() {
|
|
if [ "$script" = 'instance' ] && [ $(CreoleGet one_database_type) = "mysql" ] && [ $(CreoleGet one_ha_server_index 0) = "0" ]; then
|
|
Question_ouinon "Voulez-vous migrer de SQLite à Mysql ?" "True" "oui" "warn"
|
|
rep=$(echo "$?")
|
|
if [ "$rep" == "0" ]; then
|
|
# do not recover db on follower
|
|
HOST=$(CreoleGet one_database_host)
|
|
DB=$(CreoleGet one_database_name)
|
|
USER=$(CreoleGet one_database_user)
|
|
PASS=$(CreoleGet one_database_pass)
|
|
cp -a /etc/one/oned.conf /etc/one/oned.conf.ori
|
|
# HA ne doit pas être activer pour la migration
|
|
CreoleCat -s /usr/share/eole/creole/distrib/oned-ha-mysql.conf -o /etc/one/oned.conf
|
|
oned -i
|
|
onedb sqlite2mysql -s /var/lib/one/one.db -u $USER -p $PASS -d $DB -S $HOST
|
|
cp -a /etc/one/oned.conf.ori /etc/one/oned.conf
|
|
fi
|
|
fi
|
|
}
|
|
|
|
echo
|
|
to_mysql
|
|
echo
|
|
EchoGras "Mise à jour de la base de données ONE"
|
|
echo
|
|
updateDB
|
|
exit ${?}
|