L'ensemble des scripts et bibliothèques bash utilisés pour maintenir l'infrastructure du Tetalab. Ce socle Bash est une version légère et adaptée du socle Bash essentiellement développé par Emmanuel Confrère, éminent DBA Calédonien.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

185 lines
5.9 KiB

#!/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