186 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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'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> 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
 | 
						|
  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
 |