upgrade.d

This commit is contained in:
Maniack Crudelis 2016-08-18 12:08:01 +02:00
parent e3e08575de
commit 018c5a2cbc
4 changed files with 39 additions and 0 deletions

View file

@ -30,3 +30,6 @@ Il va alterner toutes les 30 minutes (par défaut) les 2 conteneurs et rétablir
## demo_upgrade
Ce script est placé en cron par demo_lxc_build.
demo_upgrade vérifie chaque nuit les mises à jour sur les conteneurs, et les applique le cas échéant. Si nécessaire, il se charge également de refaire le snapshot.
Pour effectuer des modifications pérennes sur les conteneurs, il est possible d'ajouter des scripts dans le dossier upgrade.d. Ces scripts seront exécutés après l'upgrade des packages dans chaque conteneur.
En cas d'échec d'exécution, le script sera mis de côté en attendant sa correction. Sinon, il sera archivé.

View file

@ -14,6 +14,7 @@ PLAGE_IP=$(cat "$script_dir/demo_lxc_build.sh" | grep PLAGE_IP= | cut -d '=' -f2
TIME_TO_SWITCH=$(cat "$script_dir/demo_lxc_build.sh" | grep TIME_TO_SWITCH= | cut -d '=' -f2)
IP_UPGRADE=$PLAGE_IP.150
LOOP=0
UPGRADE_DEMO_CONTAINER () { # Démarrage, upgrade et snapshot
MACHINE=$1
@ -50,6 +51,25 @@ UPGRADE_DEMO_CONTAINER () { # Démarrage, upgrade et snapshot
sudo lxc-attach -n $MACHINE -- apt-get autoremove
sudo lxc-attach -n $MACHINE -- apt-get autoclean
# Exécution des scripts de upgrade.d
LOOP=$((LOOP + 1))
ls -1 "$script_dir/upgrade.d" | while read LIGNE
do
if [ ! "$LIGNE" == "exemple" ] && [ ! "$LIGNE" == "old_scripts" ] && ! echo "$LIGNE" | grep -q ".fail$" # Le fichier exemple, le dossier old_scripts et les scripts fail sont ignorés
then
# Exécute chaque script trouvé dans upgrade.d
/bin/bash "$script_dir/upgrade.d/$LIGNE" $MACHINE
if [ "$?" -ne 0 ]; then # Si le script a échoué, le snapshot est annulé.
echo "Échec du script $LIGNE"
mv -f "$script_dir/upgrade.d/$LIGNE" "$script_dir/upgrade.d/$LIGNE.fail"
update_apt=0
elif [ "$LOOP" -eq 2 ]
then # Après l'upgrade du 2e conteneur, déplace le script dans le dossier des anciens scripts si il a été exécuté avec succès.
mv -f "$script_dir/upgrade.d/$LIGNE" "$script_dir/upgrade.d/old_scripts/$LIGNE"
fi
fi
done
# Arrêt de la machine virtualisée
sudo lxc-stop -n $MACHINE

13
upgrade.d/exemple Normal file
View file

@ -0,0 +1,13 @@
#!/bin/bash
# Ce script est un script d'exemple à dupliquer pour effectuer des modifications pérennes dans les conteneurs de demo.
# Le script n'est pas exécuté dans le conteneur, il convient donc d'utiliser lxc-attach pour opérer à l'intérieur.
# L'ensemble des scripts ajoutés ici seront exécutés lors de l'upgrade des conteneurs dans la nuit
# Toutefois, l'exécution sera loggée dans $script_dir/demo_upgrade.log
# 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
MACHINE=$1 # Nom du conteneur
sudo lxc-attach -n $MACHINE -- echo coucou

3
upgrade.d/old_scripts/.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
*.swp
*~
Notes