#!/bin/bash #------------------------------------------------------------------------------------------------------------------ # Script : sys_refresh_socle_bash.sh # Auteur : Doug Le Tough # Date : 23-07-2017 # Version : 1.0.0 # Objet : Permet la mise à jour de l'installation 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_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> sys_refresh_socle_bash.sh ## ## ex: ## sys_refresh_socle_bash.sh ## ## Prérequis: ## ---------- ## - Le script doit être executé par l'utilisateur asr sur sousetsuken ## ## Fonctionnement: ## --------------- ## Sur sousetsuken: Supprime la copie locale 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 sudo ${SOCLE_DIR}/install.sh if [ ! ${RET_VAL} -eq 0 ]; then ERROR="Erreur lors de l'installation du socle Bash" fct_erreur 2 fi fct_message "----------------------------------------------------------" } 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} "sudo ${SOCLE_DIR}/install.sh" if [ ! ${RET_VAL} -eq 0 ]; then ERROR="Erreur lors de l'installation du socle Bash" fct_erreur 2 fi fct_message "----------------------------------------------------------" done } #------------------------------------------------------------------------------------------------------------------ # Traitement #------------------------------------------------------------------------------------------------------------------ check_config rm_local_repo clone_repo install_local cp_install_repo fct_erreur 0