2016-08-12 17:35:14 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
2016-08-13 01:08:44 +02:00
|
|
|
# Script de switch entre les 2 conteneurs de demo.
|
|
|
|
# Ce script n'a vocation qu'a être dans un cron
|
|
|
|
|
2016-08-12 17:35:14 +02:00
|
|
|
# Récupère le dossier du script
|
|
|
|
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$PWD/$(dirname "$0" | cut -d '.' -f2)"; fi
|
|
|
|
|
2016-08-13 01:08:44 +02:00
|
|
|
PLAGE_IP=$(cat "$script_dir/demo_lxc_build.sh" | grep PLAGE_IP= | cut -d '=' -f2)
|
|
|
|
LXC_NAME1=$(cat "$script_dir/demo_lxc_build.sh" | grep LXC_NAME1= | cut -d '=' -f2)
|
|
|
|
LXC_NAME2=$(cat "$script_dir/demo_lxc_build.sh" | grep LXC_NAME2= | cut -d '=' -f2)
|
2016-08-12 17:35:14 +02:00
|
|
|
|
|
|
|
# Vérifie l'état des machines.
|
2016-08-13 22:05:38 +02:00
|
|
|
if [ "$(sudo lxc-info --name $LXC_NAME1 | grep -c "RUNNING")" -eq "1" ]
|
|
|
|
then # Si la machine 1 est démarrée.
|
2016-08-12 17:35:14 +02:00
|
|
|
LXC_A=$LXC_NAME1
|
|
|
|
LXC_B=$LXC_NAME2
|
|
|
|
else # Sinon, on suppose que c'est la machine 2 qui est en cours.
|
|
|
|
LXC_A=$LXC_NAME2
|
|
|
|
LXC_B=$LXC_NAME1
|
|
|
|
# Si aucune machine ne tourne, la première démarrera.
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Démarre le conteneur B et arrête le conteneur A.
|
2016-08-13 19:31:36 +02:00
|
|
|
sudo lxc-start -n $LXC_B -o "$script_dir/demo_switch.log" -d > /dev/null # Démarre l'autre machine
|
2016-08-12 17:35:14 +02:00
|
|
|
sleep 10 # Attend 10 seconde pour s'assurer du démarrage de la machine.
|
2016-08-13 22:05:38 +02:00
|
|
|
if [ "$(sudo lxc-info --name $LXC_B | grep -c "STOPPED")" -eq "1" ]
|
|
|
|
then
|
2016-08-12 17:35:14 +02:00
|
|
|
# Le conteneur n'a pas réussi à démarrer. On devrait avertir un responsable par mail...
|
|
|
|
# [...]
|
2016-08-13 19:31:36 +02:00
|
|
|
exit 1
|
2016-08-12 17:35:14 +02:00
|
|
|
else
|
|
|
|
# Bascule sur le conteneur B avec HAProxy...
|
2016-08-13 22:05:38 +02:00
|
|
|
# Automatique par HAProxy lorsque la machine A sera éteinte.
|
2016-08-12 17:35:14 +02:00
|
|
|
# Arrêt du conteneur A. Il est remplacé par le B
|
2016-08-13 22:05:38 +02:00
|
|
|
sudo touch /var/lib/lxc/$LXC_A/lock_file # Met en place un fichier pour indiquer que la machine n'est pas encore dispo.
|
2016-08-12 17:35:14 +02:00
|
|
|
sudo lxc-stop -n $LXC_A
|
|
|
|
# Restaure le snapshot de la machine A avant sa prochaine exécution
|
2016-08-13 22:05:38 +02:00
|
|
|
sudo lxc-snapshot -r snap0 -n $LXC_A
|
|
|
|
sudo rm /var/lib/lxc/$LXC_A/lock_file # Libère le lock
|
2016-08-12 17:35:14 +02:00
|
|
|
fi
|