"Procédure d'installation"

This commit is contained in:
Doug Le Tough 2017-07-22 01:55:47 +02:00
parent b369b2eb00
commit 94946c834d
4 changed files with 116 additions and 44 deletions

View File

@ -1,6 +1,35 @@
# Aide memoire pour l'écriture de scripts avec le socle bash # Historique
* Sommaire Le **socle Bash** est **une version allégée** d'un ensemble de bibliothèques et fonctions
écrit en grande partie par **Emmanuel Confrère**, émminent DBA Calédonien qui nous a
autorisé à l'utiliser au sein du Tetalab, et dont l'utilité est d'assurer la cohérence
des scripts qui s'appuient dessus.
Ce **socle Bash** est fiable et robuste. Il peut sans aucun doute être utilisé en production
à la condition que l'ensemble des conseils listés dans la documentation soient respectés.
Entre autres fonctionalités ce **socle Bash** permet aux scripts qui s'appuient dessus:
* La gestion de l'historique d'execution
* La gestion des logs
* La gestion des fichiers temporaires
* La gestion des options et arguments
* La gestion des erreurs
* La standadisation de l'affichage
* ...
# Installation
L'installlation du script bash est simple et nécessite les droits **root**.
* Éditez le fichier de configuration **./conf/install_init.conf** de manière à ce
que les variables qui y sont définies correspondent à vos besoins.
* Lancez l'installation en tant qu'utilisateur **root** (ou sudo):
sudo ./install.sh
# Documentation
* **Sommaire**
* I - Arborescence du socle * I - Arborescence du socle
* II - Variables d'environement * II - Variables d'environement
* 1 - Variables globales * 1 - Variables globales
@ -32,7 +61,7 @@
## I - Arborescence du socle ## I - Arborescence du socle
La racine des dossiers utilisée par le Socle Bash est définie par la variable d'environement NC\_EXPL\_ROOT. La racine des dossiers utilisée par le **socle Bash** est définie par la variable d'environement NC\_EXPL\_ROOT.
Cette dernière est initialisée à la connexion par l'appel au script /etc/profile.d/tetalab.sh Cette dernière est initialisée à la connexion par l'appel au script /etc/profile.d/tetalab.sh
Cette arborescence est utilisée pour tous scripts Bash ainsi que les variables d'environement qui Cette arborescence est utilisée pour tous scripts Bash ainsi que les variables d'environement qui
en découlent. en découlent.
@ -306,7 +335,7 @@ Les options par défaut réalisent les actions suivantes :
-log [id] : Affiche le dernier journal ou le journal "id" (identifiant de session d'exécution). -log [id] : Affiche le dernier journal ou le journal "id" (identifiant de session d'exécution).
-cpt [id] : Affiche le dernier compte-rendu ou le Compte-rendu "id" (identifiant de session d'execution). -cpt [id] : Affiche le dernier compte-rendu ou le Compte-rendu "id" (identifiant de session d'execution).
-hist [N] : Affiche l'historique des "N" dernières executions (N=10 par défaut) -hist [N] : Affiche l'historique des "N" dernières executions (N=10 par défaut)
-dbg N : Activation du mode debug au niveau "N". Active les messages gérés par la librairie fct_message -dbg N : Activation du mode debug au niveau "N". Active les messages gérés par la bibliothèque fct_message
dont l'option -debug est utilisée. dont l'option -debug est utilisée.
@ -473,7 +502,7 @@ assurer une homogénéite dans l'ensemble du socle.
G_VAR1=${G_AVR1:="Valeur par defaut"} # <Comentaire> G_VAR1=${G_AVR1:="Valeur par defaut"} # <Comentaire>
... ...
# -- Control de coherence des options # -- Contrôle de cohérence des options
# -- -------------------------------- # -- --------------------------------
# -- Traitement # -- Traitement

12
conf/install_init.conf Normal file
View File

@ -0,0 +1,12 @@
#!/bin/bash
# La variable d'environnement qui définira l'emplacement
# de l'ensemble du socle Bash
NC_EXPL_ROOT=/opt/tetalab
export NC_EXPL_ROOT
# Le repertoire d'installation des fichiers de profiles système
PROFILE_DIR=/etc/profile.d
# Le nom du fichier de profile système à créer
PROFILE_FILE=tetalab.sh

View File

@ -1,29 +1,15 @@
#!/bin/bash #!/bin/bash
# #
# Script d'installation du socle bash Tetalab # Script d'installation du socle Bash
# #
# 21/07/2017 - Doug Le Tough # 21/07/2017 - Doug Le Tough / Tetalab
# #
########################################################################
#
PROFILE_DIR=/etc/profile.d # Fonctions
PROFILE_FILE=tetalab.sh #
INSTALL_DIR=$(dirname $0) ########################################################################
NC_EXPL_ROOT=/opt/tetalab
export NC_EXPL_ROOT
NC_EXPL_LIB=${NC_EXPL_ROOT}/lib
NC_EXPL_BIN=${NC_EXPL_ROOT}/bin
NC_EXPL_LOG=${NC_EXPL_ROOT}/log
NC_EXPL_HST=${NC_EXPL_ROOT}/hist
NC_EXPL_CPT=${NC_EXPL_ROOT}/cpt
NC_EXPL_TMP=${NC_EXPL_ROOT}/tmp
NC_EXPL_DAT=${NC_EXPL_ROOT}/dat
NC_EXPL_MOD=${NC_EXPL_ROOT}/mod
NC_EXPL_CFG=${NC_EXPL_ROOT}/conf
NC_EXPL_MSG=${NC_EXPL_ROOT}/msg
NC_EXPL_MAN=${NC_EXPL_ROOT}/man
function exit_on_error function exit_on_error
{ {
@ -32,48 +18,96 @@ function exit_on_error
exit 1 exit 1
} }
function continue_on_ok
{
echo -e "\033[92m[OK]\033[0m"
}
########################################################################
#
# Contrôles
#
########################################################################
if [ ! $(id -u) -eq 0 ]; then if [ ! $(id -u) -eq 0 ]; then
exit_on_error "Ce script doit être exécuté par l'utilisateur root" exit_on_error "Ce script doit être exécuté par l'utilisateur root"
fi fi
echo -e "\033[93mInstallation du socle bash Tetalab:\033[0m" PKG_DIR=$(dirname $0)
echo -e "\033[93m * Création du répertoire racine: ${NC_EXPL_ROOT}\033[0m" PKG_INSTALL_CONF=${PKG_DIR}/conf/install_init.conf
PKG_SOCLE_INIT_CONF=${PKG_DIR}/conf/shell-env/profile_init.env
if [ ! -r ${PKG_INSTALL_CONF} ] || [ ! -r ${PKG_SOCLE_INIT_CONF} ] ; then
exit_on_error "Erreur lors de l'initialisation de l'environnement d'installation. Vérifier les permissions sur les fichiers ${PKG_INSTALL_CONF} et ${PKG_SOCLE_INIT_CONF} "
fi
########################################################################
#
# Main
#
########################################################################
source ${PKG_INSTALL_CONF}
source ${PKG_SOCLE_INIT_CONF}
echo -e "\033[93mInstallation du socle Bash:\033[0m"
echo -e "\033[93m * Répertoire racine: ${NC_EXPL_ROOT}\033[0m"
echo -e "\033[93m * Création des répertoires:\033[0m" echo -e "\033[93m * Création des répertoires:\033[0m"
# Création des répertoires de destination
for DIR in $NC_EXPL_LIB $NC_EXPL_BIN $NC_EXPL_LOG $NC_EXPL_HST $NC_EXPL_CPT $NC_EXPL_TMP $NC_EXPL_DAT $NC_EXPL_MOD $NC_EXPL_CFG $NC_EXPL_MSG $NC_EXPL_MAN; for DIR in $NC_EXPL_LIB $NC_EXPL_BIN $NC_EXPL_LOG $NC_EXPL_HST $NC_EXPL_CPT $NC_EXPL_TMP $NC_EXPL_DAT $NC_EXPL_MOD $NC_EXPL_CFG $NC_EXPL_MSG $NC_EXPL_MAN;
do do
echo -e " * ${DIR}" echo -en " * ${DIR} "
sudo mkdir -p ${DIR}; sudo mkdir -p ${DIR};
RET_VAL=$? RET_VAL=$?
if [ ! ${RET_VAL} -eq 0 ]; then if [ ! ${RET_VAL} -eq 0 ]; then
exit_on_error "Erreur lors de la création des répertoires" exit_on_error "Erreur lors de la création des répertoires"
fi fi
continue_on_ok
done done
echo -e "\033[93m * Copie des fichiers de profile dans ${PROFILE_DIR}\033[0m" # Installation des fichiers de profile
cp ${INSTALL_DIR}/${PROFILE_FILE} ${PROFILE_DIR} echo -en "\033[93m * Création du fichier de profile dans ${PROFILE_DIR}\033[0m "
cat << EOF > ${PROFILE_DIR}/${PROFILE_FILE}
NC_EXPL_ROOT=${NC_EXPL_ROOT}
export NC_EXPL_ROOT
source \${NC_EXPL_ROOT}/conf/shell-env/profile_init.env
EOF
RET_VAL=$? RET_VAL=$?
if [ ! ${RET_VAL} -eq 0 ]; then if [ ! ${RET_VAL} -eq 0 ]; then
exit_on_error "Erreur lors de la copie des fichiers de profile" exit_on_error "Erreur lors de la création du fichier de profile"
fi fi
continue_on_ok
echo -e "\033[93m * Copie des fichiers de configuration dans ${NC_EXPL_CFG}\033[0m" # Installation des fichiers de configuration
cp -R ${INSTALL_DIR}/conf/* ${NC_EXPL_CFG} echo -en "\033[93m * Copie des fichiers de configuration dans ${NC_EXPL_CFG}\033[0m "
cp -R ${PKG_DIR}/conf/* ${NC_EXPL_CFG}
RET_VAL=$? RET_VAL=$?
if [ ! ${RET_VAL} -eq 0 ]; then if [ ! ${RET_VAL} -eq 0 ]; then
exit_on_error "Erreur lors de la copie des fichiers de configuration" exit_on_error "Erreur lors de la copie des fichiers de configuration"
fi fi
continue_on_ok
echo -e "\033[93m * Copie des bibliothèques dans ${NC_EXPL_LIB}\033[0m" # Installation des bibliothèques
cp -R ${INSTALL_DIR}/lib/* ${NC_EXPL_LIB} echo -en "\033[93m * Copie des bibliothèques dans ${NC_EXPL_LIB}\033[0m "
cp -R ${PKG_DIR}/lib/* ${NC_EXPL_LIB}
RET_VAL=$? RET_VAL=$?
if [ ! ${RET_VAL} -eq 0 ]; then if [ ! ${RET_VAL} -eq 0 ]; then
exit_on_error "Erreur lors de la copie des bibliothèques" exit_on_error "Erreur lors de la copie des bibliothèques"
fi fi
continue_on_ok
echo -e "\033[93m * Copie des scripts dans ${NC_EXPL_BIN}\033[0m" # Installation des scripts
cp -R ${INSTALL_DIR}/bin/* ${NC_EXPL_BIN} SCRIPTS_NUM=$(find ${PKG_DIR}/bin/ -type f | wc -l)
RET_VAL=$? if [ ! ${SCRIPTS_NUM} -eq 0 ];
if [ ! ${RET_VAL} -eq 0 ]; then then
exit_on_error "Erreur lors de la copie des scripts" echo -en "\033[93m * Copie des scripts dans ${NC_EXPL_BIN}\033[0m "
cp -R ${PKG_DIR}/bin/* ${NC_EXPL_BIN}
RET_VAL=$?
if [ ! ${RET_VAL} -eq 0 ]; then
exit_on_error "Erreur lors de la copie des scripts"
fi
continue_on_ok
fi fi

View File

@ -1,3 +0,0 @@
NC_EXPL_ROOT=/opt/tetalab
export NC_EXPL_ROOT
source ${NC_EXPL_ROOT}/conf/shell-env/profile_init.env