"Procédure d'installation"
This commit is contained in:
parent
b369b2eb00
commit
94946c834d
39
README.md
39
README.md
@ -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
12
conf/install_init.conf
Normal 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
|
100
install.sh
100
install.sh
@ -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)
|
||||||
|
if [ ! ${SCRIPTS_NUM} -eq 0 ];
|
||||||
|
then
|
||||||
|
echo -en "\033[93m * Copie des scripts dans ${NC_EXPL_BIN}\033[0m "
|
||||||
|
cp -R ${PKG_DIR}/bin/* ${NC_EXPL_BIN}
|
||||||
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 scripts"
|
exit_on_error "Erreur lors de la copie des scripts"
|
||||||
fi
|
fi
|
||||||
|
continue_on_ok
|
||||||
|
fi
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
NC_EXPL_ROOT=/opt/tetalab
|
|
||||||
export NC_EXPL_ROOT
|
|
||||||
source ${NC_EXPL_ROOT}/conf/shell-env/profile_init.env
|
|
Loading…
Reference in New Issue
Block a user