From 10101fcc97198679bdc991f7c9f66791e959d003 Mon Sep 17 00:00:00 2001 From: pulsar Date: Sat, 17 Apr 2021 18:29:29 +0200 Subject: [PATCH] =?UTF-8?q?Script=20de=20d=C3=A9placement=20automatis?= =?UTF-8?q?=C3=A9=20des=20CT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + balance-containers.bash | 68 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 .gitignore create mode 100644 balance-containers.bash diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7df8dcc --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +balance-containers.csv diff --git a/balance-containers.bash b/balance-containers.bash new file mode 100644 index 0000000..e31dff3 --- /dev/null +++ b/balance-containers.bash @@ -0,0 +1,68 @@ +#!/bin/bash + +## Récupérer l'emplacement actuel +currentPath=$(dirname $0) + +## Récupérer le nom du script +scriptName=$(basename $0) + +# Définir l'emplacement de la liste +containersList="${currentPath}/$(echo $scriptName | awk -F'.' '{print $1}').csv" + +# Définir l'aide +show_usage() { + echo "Usage: ${currentPath}/${scriptName} [options [parameters]]" + echo + echo "Options:" + echo " -b or --balance: move containers" + echo " -l or --list: generate list of current balance (used by --balance)" + echo " -m or --migrate : move containers on local host to target" +} + +move_ct() { +# echo "lxc move --target $target $ct" + + # Arrêter le conteneur + lxc stop $ct; + + # Déplacer et démarrer le conteneur + lxc move --target $target $ct &&\ + lxc start $ct +} + +# Boucler sur les arguments +case "${1}" in + -l|--list) + lxc list --columns Ln --format csv | tee $containersList + ;; + -b|--balance) + while read line; do + # Découper les informations + target=$(echo $line | awk -F',' '{print $1}') + ct=$(echo $line | awk -F',' '{print $2}') + + # Récupérer l'hôte courrant + host=$(lxc list --columns Ln --format csv $ct | grep $target) + + # Traiter le conteneur s il n'est pas sur l'hôte cible + if [[ -z "${host}" ]]; then + move_ct + fi + done < $containersList + ;; + -m|--migrate) + # Vérifier la présence d'une cible + [[ -z "${2}" ]] && show_usage && exit + + # Stocker la cible + target="${2}" + + # Parcourir la liste de conteneur locaux + for line in $(lxc list --columns Ln --format csv | grep $(hostname)); do + ct=$(echo $line | awk -F',' '{print $2}') + move_ct + done + ;; + *) + show_usage; +esac