From e60611d5404bbbdb10df8eee7435d71055ec1599 Mon Sep 17 00:00:00 2001 From: Doug Le Tough Date: Sat, 22 Jul 2017 23:35:11 +0200 Subject: [PATCH] "Ajout expl_refresh_socle_bash.sh" --- bin/expl_refresh_socle_bash.sh | 182 ++++++++++++++++++++++++++++++ conf/expl_refresh_socle_bash.conf | 7 ++ msg/expl_refresh_socle_bash.msg | 2 + 3 files changed, 191 insertions(+) create mode 100644 bin/expl_refresh_socle_bash.sh create mode 100644 conf/expl_refresh_socle_bash.conf create mode 100644 msg/expl_refresh_socle_bash.msg diff --git a/bin/expl_refresh_socle_bash.sh b/bin/expl_refresh_socle_bash.sh new file mode 100644 index 0000000..f6873e6 --- /dev/null +++ b/bin/expl_refresh_socle_bash.sh @@ -0,0 +1,182 @@ +#!/bin/bash +#------------------------------------------------------------------------------------------------------------------ +# Script : expl_refresh_socle_bash.sh +# Auteur : Doug Le Tough +# Date : 23-07-2017 +# Version : 1.0.0 +# Objet : Permet la mise à jour de l'insallation du socle bash +# sur les VM du Tetalab +# +#------------------------------------------------------------------------------------------------------------------ +# Mise a jour : +# +# 1.0.0 22/07/2017 - Doug Le Tough - Cre : Mise en production +# +#------------------------------------------------------------------------------------------------------------------ +# Dependances : Aucune +# +#------------------------------------------------------------------------------------------------------------------ +# Liste des options et arguments: +# +# Ce script n'accepte *aucune* option +# +# @OPT: f:bidon:::::: +# +#------------------------------------------------------------------------------------------------------------------ +# Liste des paramètres de configuration: +# +# SOCLE_BASE_DIR=/home/asr/ +# SOCLE_GIT_URL=ssh://git@tetalab.org:2213/tetalab/socle_bash +# TETALAB_VM[0]=jimmy.local.tetalab.org +# TETALAB_VM[1]=billy.local.tetalab.org +# TETALAB_VM[2]=marian.local.tetalab.org +# TETALAB_VM[3]=sonny.local.tetalab.org +# TETALAB_VM[4]=web.local.tetalab.org +# +#------------------------------------------------------------------------------------------------------------------ +# Liste des erreurs: +# +# 2 | erreur | stop | ${ERROR} +# +#------------------------------------------------------------------------------------------------------------------ +## +## Syntaxe : +## -------- +## +## prompt> expl_refresh_socle_bash.sh +## +## ex: +## expl_refresh_socle_bash.sh +## +## Prérequis: +## ---------- +## - Le script doit être executé par l'utilisateur asr sur sousetsuken +## +## Fonctionnement: +## --------------- +## Sur sousetsuken: Supprime la copie locae du dépôt Git du socle Bash, clone le dépôt Git dont l'URL est +## définie dans le fichier de configuration (SOCLE_GIT_URL) et installe le socle Bash. +## +## Puis, copie, sur l'ensemble des VM listées dans le fichier de configuration (TETALAB_VM[*]), +## le dépot Git local du socle Bash et l'installe. +## +#------------------------------------------------------------------------------------------------------------------ +# Initialisation de l'environement +#------------------------------------------------------------------------------------------------------------------ + +if [ "${USER}" != "asr" ]; then + ERROR="Seul l'utilisateur asr peut utiliser ce script" + echo -e "\033[91m${ERROR}\033[0m" + exit 1 +fi + +source /etc/profile.d/tetalab.sh + +if [ ! -f ${NC_EXPL_CFG}/init.conf ]; then + echo "Le fichier d'initialisation du socle \${NC_EXPL_CFG}/init.conf n'éxiste pas !" + echo "Arrêt du script par sécurité" + exit 250 +fi + +source ${NC_EXPL_CFG}/init.conf + +#------------------------------------------------------------------------------------------------------------------ +# Fonctions +#------------------------------------------------------------------------------------------------------------------ + +function check_config +{ + fct_message "Vérification de la configuration:" -color jaune + if [ ! -r ${SH_FICCFG} ]; then + ERROR="Fichier de configuration ${SH_FICCFG} absent ou illisible" + fct_erreur 2 + fi + if [ ${#SOCLE_DIR} -eq 0 ]; then + ERROR="Paramètre manquant ou vide dans le fichier de configuration: SOCLE_DIR" + fct_erreur 2 + fi + if [ ${#SOCLE_GIT_URL} -eq 0 ]; then + ERROR="Paramètre manquant ou vide dans le fichier de configuration: SOCLE_GIT_URL" + fct_erreur 2 + fi + if [ ${#TETALAB_VM[*]} -eq 0 ]; then + ERROR="Aucune VM définie dans le fichier de configuration" + fct_erreur 2 + fi + fct_message " * SOCLE_DIR: ${SOCLE_DIR}" + fct_message " * SOCLE_GIT_URL: ${SOCLE_GIT_URL}" + INDEX=0 + for VM in ${TETALAB_VM[@]} + do + fct_message " * VM[${INDEX}]: ${VM}" + INDEX=$(( INDEX+1 )) + done +} + +function rm_local_repo +{ + fct_message "Suppression de la copie locale du dépôt: ${SOCLE_DIR}" -color jaune + rm -Rf ${SOCLE_DIR} + RET_VAL=$? + if [ ! ${RET_VAL} -eq 0 ]; then + ERROR="Erreur lors de la suppression du dépôt local" + fct_erreur 2 + fi +} + +function install_local +{ + fct_message "Installation locale du socle Bash" -color jaune + ${SOCLE_DIR}/install.sh + if [ ! ${RET_VAL} -eq 0 ]; then + ERROR="Erreur lors de l'installation du socle Bash" + fct_erreur 2 + fi +} + +function clone_repo +{ + fct_message "Clonage du dépôt distant ${SOCLE_GIT_URL}" -color jaune + git clone ${SOCLE_GIT_URL} ${SOCLE_DIR} + RET_VAL=$? + if [ ! ${RET_VAL} -eq 0 ]; then + ERROR="Erreur lors du clonage du dépôt" + fct_erreur 2 + fi +} + +function cp_install_repo +{ + for VM in ${TETALAB_VM[@]} + do + fct_message "Suppression du dépôt sur la VM: ${VM}" -color jaune + ssh ${VM} "rm -Rf ${SOCLE_DIR}" + RET_VAL=$? + if [ ! ${RET_VAL} -eq 0 ]; then + ERROR="Erreur lors de la suppression du dépôt" + fct_erreur 2 + fi + fct_message "Copie du dépôt sur la VM: ${VM}" -color jaune + scp -qr ${SOCLE_DIR} ${VM}:${SOCLE_DIR} + if [ ! ${RET_VAL} -eq 0 ]; then + ERROR="Erreur lors de la copie du dépôt" + fct_erreur 2 + fi + fct_message "Installation du socle Bash sur ${VM}" -color jaune + ssh ${VM} "${SOCLE_DIR}/install.sh" + if [ ! ${RET_VAL} -eq 0 ]; then + ERROR="Erreur lors de l'installation du socle Bash" + fct_erreur 2 + fi + done +} + +#------------------------------------------------------------------------------------------------------------------ +# Traitement +#------------------------------------------------------------------------------------------------------------------ + +check_config +rm_local_repo +clone_repo +install_local +cp_install_repo diff --git a/conf/expl_refresh_socle_bash.conf b/conf/expl_refresh_socle_bash.conf new file mode 100644 index 0000000..bd6b049 --- /dev/null +++ b/conf/expl_refresh_socle_bash.conf @@ -0,0 +1,7 @@ +SOCLE_DIR=/home/asr/socle_bash +SOCLE_GIT_URL=ssh://git@tetalab.org:2213/tetalab/socle_bash +TETALAB_VM[0]=jimmy.local.tetalab.org +TETALAB_VM[1]=billy.local.tetalab.org +TETALAB_VM[2]=marian.local.tetalab.org +TETALAB_VM[3]=sonny.local.tetalab.org +TETALAB_VM[4]=web.local.tetalab.org diff --git a/msg/expl_refresh_socle_bash.msg b/msg/expl_refresh_socle_bash.msg new file mode 100644 index 0000000..8e0357a --- /dev/null +++ b/msg/expl_refresh_socle_bash.msg @@ -0,0 +1,2 @@ +2 | erreur | stop | ${ERROR} +3 | erreur | continu | ${ERROR}