"Déplacement scripts dans autres depots + ajout dummy + correction install.sh"
This commit is contained in:
parent
4e07545383
commit
e3afd19eff
@ -1,218 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Script : ctl_all_nrpe.sh
|
|
||||||
# Auteur : Doug Le Tough
|
|
||||||
# Date : 23-07-2017
|
|
||||||
# Version : 1.0.0
|
|
||||||
# Objet : Fait tous les contrôles NRPE standars sur l'ensemble des VM listées
|
|
||||||
# dans le fichier de configuration et notifie les incidents sur freenode.net#tetalab
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Mise a jour :
|
|
||||||
#
|
|
||||||
# 1.0.0 22/07/2017 - Doug Le Tough - Cre : Mise en production
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Dependances :
|
|
||||||
# - /usr/local/bin/tetalab/ircbot.py
|
|
||||||
# - ctl_host_process.sh
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des options et arguments:
|
|
||||||
#
|
|
||||||
# Ce script n'accepte *aucune* option
|
|
||||||
#
|
|
||||||
# @OPT: f:bidon::::::
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des paramètres de configuration:
|
|
||||||
#
|
|
||||||
# IRC_BOT=/usr/local/bin/tetalab/ircbot.py
|
|
||||||
# NRPE_CHECK_PATH=/etc/nagios/nrpe/
|
|
||||||
# NRPE_CHECK_BIN=/usr/libexec/nagios/check_nrpe
|
|
||||||
# INFRA_SERVER=sousetsuken.local.tetalab.org
|
|
||||||
# # VM monitorée par NRPE
|
|
||||||
# # ATTENTION: web n'est *volontairement* pas monitorée par NRPE
|
|
||||||
# TETALAB_VM[0]=sousetsuken.local.tetalab.org
|
|
||||||
# TETALAB_VM[1]=jimmy.local.tetalab.org
|
|
||||||
# TETALAB_VM[2]=billy.local.tetalab.org
|
|
||||||
# TETALAB_VM[3]=sonny.local.tetalab.org
|
|
||||||
# TETALAB_VM[4]=marian.local.tetalab.org
|
|
||||||
# # Processus monitorés indépendemment de NRPE
|
|
||||||
# PROCESS[0]=sousetsuken.local.tetalab.org:/usr/sbin/httpd
|
|
||||||
# PROCESS[1]=sousetsuken.local.tetalab.org:/usr/sbin/named
|
|
||||||
# PROCESS[2]=sousetsuken.local.tetalab.org:/usr/sbin/ntpd
|
|
||||||
# PROCESS[3]=sousetsuken.local.tetalab.org:/usr/sbin/crond
|
|
||||||
# PROCESS[4]=sousetsuken.local.tetalab.org:/usr/bin/nrpe
|
|
||||||
# PROCESS[5]=marian.local.tetalab.org:/usr/sbin/httpd
|
|
||||||
# PROCESS[6]=marian.local.tetalab.org:/usr/sbin/ntpd
|
|
||||||
# PROCESS[7]=marian.local.tetalab.org:/usr/sbin/crond
|
|
||||||
# PROCESS[8]=marian.local.tetalab.org:/usr/bin/nrpe
|
|
||||||
# PROCESS[9]=web.local.tetalab.org:/usr/lib/postfix/sbin/master
|
|
||||||
# PROCESS[10]=sonny.local.tetalab.org:/usr/lib64/postgresql/9.6/bin/postgres
|
|
||||||
# PROCESS[11]=sonny.local.tetalab.org:/usr/sbin/ntpd
|
|
||||||
# PROCESS[12]=sonny.local.tetalab.org:/usr/sbin/crond
|
|
||||||
# PROCESS[13]=sonny.local.tetalab.org:/usr/bin/nrpe
|
|
||||||
# PROCESS[14]=jimmy.local.tetalab.org:/usr/sbin/httpd
|
|
||||||
# PROCESS[15]=jimmy.local.tetalab.org:/usr/sbin/node
|
|
||||||
# PROCESS[16]=jimmy.local.tetalab.org:/usr/sbin/ntpd
|
|
||||||
# PROCESS[17]=jimmy.local.tetalab.org:/usr/sbin/crond
|
|
||||||
# PROCESS[18]=jimmy.local.tetalab.org:/usr/bin/nrpe
|
|
||||||
# PROCESS[19]=billy.local.tetalab.org:/usr/sbin/ntpd
|
|
||||||
# PROCESS[20]=billy.local.tetalab.org:/usr/sbin/crond
|
|
||||||
# PROCESS[21]=billy.local.tetalab.org:/usr/bin/nrpe
|
|
||||||
# PROCESS[22]=billy.local.tetalab.org:/usr/sbin/httpd
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des erreurs:
|
|
||||||
#
|
|
||||||
# 2 | erreur | stop | ${ERROR}
|
|
||||||
# 3 | erreur | continu | ${ERROR}
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
##
|
|
||||||
## Syntaxe :
|
|
||||||
## --------
|
|
||||||
##
|
|
||||||
## prompt> ctl_all_nrpe.sh
|
|
||||||
##
|
|
||||||
## ex:
|
|
||||||
## ctl_all_nrpe.sh
|
|
||||||
##
|
|
||||||
## Prérequis:
|
|
||||||
## ----------
|
|
||||||
## - Le script doit être executé par l'utilisateur asr sur sousetsuken
|
|
||||||
##
|
|
||||||
## Fonctionnement:
|
|
||||||
## ---------------
|
|
||||||
## Depuis sousetsuken, récupère depuis le répertoire local NRPE_CHECK_PATH la liste des checks à effectuer
|
|
||||||
## et pour ceux qui sont executables les execute sur les VM définies dans le fichier de configuration.
|
|
||||||
## puis relève les incidents et les notifie sur le chan freenode.net#tetalab en utilisant le script python
|
|
||||||
## /usr/local/bin/tetalab/ircbot.py
|
|
||||||
##
|
|
||||||
## Ce script utilise ctl_host_process.sh pour la vérification des processus.
|
|
||||||
##
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# 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 [ ${#IRC_BOT} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: IRC_BOT"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#NRPE_CHECK_PATH} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: NRPE_CHECK_PATH"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#NRPE_CHECK_BIN} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: NRPE_CHECK_BIN"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#TETALAB_VM[*]} -eq 0 ]; then
|
|
||||||
ERROR="Aucune VM définie dans le fichier de configuration"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#PROCESS[*]} -eq 0 ]; then
|
|
||||||
ERROR="Aucun processus défini dans le fichier de configuration"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message " * IRC_BOT: ${IRC_BOT}"
|
|
||||||
fct_message " * NRPE_CHECK_PATH: ${NRPE_CHECK_PATH}"
|
|
||||||
fct_message " * NRPE_CHECK_BIN: ${NRPE_CHECK_BIN}"
|
|
||||||
INDEX=0
|
|
||||||
for VM in ${TETALAB_VM[@]}
|
|
||||||
do
|
|
||||||
fct_message " * VM[${INDEX}]: ${VM}"
|
|
||||||
INDEX=$(( INDEX+1 ))
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
function check_all
|
|
||||||
{
|
|
||||||
for CHECK in $(find ${NRPE_CHECK_PATH} -type f -executable -exec basename {} .cfg \; | sort )
|
|
||||||
do
|
|
||||||
fct_message "Contrôle ${CHECK}:" -color jaune
|
|
||||||
for HOST in ${TETALAB_VM[@]}
|
|
||||||
do
|
|
||||||
CRITICAL=1
|
|
||||||
if [ "${HOST}" == "${INFRA_SERVER}" ]; then
|
|
||||||
fct_message " * ${HOST}"
|
|
||||||
RESULT=$(${NRPE_CHECK_BIN} -H ${HOST} -c ${CHECK} | cut -d'|' -f1)
|
|
||||||
CRITICAL=$(echo ${RESULT} | grep OK | wc -l)
|
|
||||||
elif [ $(echo ${CHECK} | grep "check_http_" | wc -l) -eq 0 ]; then
|
|
||||||
# On ne fait pas les checks HTTP sur les autres VM que le serveur d'infra (sousetsuken)
|
|
||||||
fct_message " * ${HOST}"
|
|
||||||
RESULT=$(${NRPE_CHECK_BIN} -H ${HOST} -c ${CHECK} | cut -d'|' -f1)
|
|
||||||
CRITICAL=$(echo ${RESULT} | grep OK | wc -l)
|
|
||||||
fi
|
|
||||||
if [ ! ${CRITICAL} -eq 1 ]; then
|
|
||||||
fct_message " - CRITICAL" -color orange
|
|
||||||
MESSAGE="${MESSAGE}|||${HOST}: ${CHECK}: ${RESULT}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
function check_process
|
|
||||||
{
|
|
||||||
fct_message "Vérification des processus:"
|
|
||||||
for PROC in ${PROCESS[@]}
|
|
||||||
do
|
|
||||||
HOST=$(echo ${PROC} | cut -d: -f1)
|
|
||||||
PROC=$(echo ${PROC} | cut -d: -f2)
|
|
||||||
ctl_host_process.sh -vm ${HOST} -process ${PROC}
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
fct_message "Processus ${PROC} inexistant sur ${HOST}" -color rose
|
|
||||||
MESSAGE="${MESSAGE}|||${HOST}: CRITICAL: Processus ${PROC} inexistant sur ${HOST}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
function send_message
|
|
||||||
{
|
|
||||||
if [ ${#MESSAGE} -eq 0 ]; then
|
|
||||||
fct_message "Aucun message à envoyer" -color jaune
|
|
||||||
fct_erreur 0
|
|
||||||
fi
|
|
||||||
fct_message "Envoi du message ${MESSAGE}" -color jaune
|
|
||||||
${IRC_BOT} "${MESSAGE}"
|
|
||||||
}
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Traitement
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
MESSAGE=""
|
|
||||||
check_config
|
|
||||||
check_all
|
|
||||||
check_process
|
|
||||||
send_message
|
|
||||||
fct_erreur 0
|
|
@ -1,87 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Script : ctl_host_process.sh
|
|
||||||
# Auteur : Doug Le Tough
|
|
||||||
# Date : 23-07-2017
|
|
||||||
# Version : 1.0.0
|
|
||||||
# Objet : Vérifie sur la VM dont le nom est passée en option la présence d'un processus
|
|
||||||
# dont le nom est passé en option
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Mise a jour :
|
|
||||||
#
|
|
||||||
# 1.0.0 22/07/2017 - Doug Le Tough - Cre : Mise en production
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des options et arguments:
|
|
||||||
#
|
|
||||||
# @OPT: o:vm:vm:1/1::::
|
|
||||||
# @OPT: o:process:process:1/1::::
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des erreurs:
|
|
||||||
#
|
|
||||||
# 1 | erreur | stop | Processus inexistant sur ${vm}
|
|
||||||
# 2 | erreur | stop | ${ERROR}
|
|
||||||
# 3 | erreur | continu | ${ERROR}
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
##
|
|
||||||
## Syntaxe :
|
|
||||||
## --------
|
|
||||||
##
|
|
||||||
## prompt> ctl_host_process.sh -vm <VM> -process <PROCESS>
|
|
||||||
##
|
|
||||||
## ex:
|
|
||||||
## ctl_host_process.sh -vm sousetsuken -process /usr/sbin/httpd
|
|
||||||
##
|
|
||||||
## Prérequis:
|
|
||||||
## ----------
|
|
||||||
## - Le script doit être executé par l'utilisateur asr sur sousetsuken
|
|
||||||
##
|
|
||||||
## Fonctionnement:
|
|
||||||
## ---------------
|
|
||||||
## Depuis sousetsuken se connecte sur la VM dont le nom est passé en option et vérifie la présence du
|
|
||||||
## du processus à l'aide de pidof
|
|
||||||
##
|
|
||||||
## Renvoie le code de sortie 1 si le process n'existe pas sur la VM et 0 dans le cas contraire.
|
|
||||||
##
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# 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'existe pas !"
|
|
||||||
echo "Arrêt du script par sécurité"
|
|
||||||
exit 250
|
|
||||||
fi
|
|
||||||
|
|
||||||
source ${NC_EXPL_CFG}/init.conf
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Fonctions
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
function check_process
|
|
||||||
{
|
|
||||||
fct_message "Vérification de la présence du processus ${process} sur ${vm}:"
|
|
||||||
PID=$(ssh ${vm} "pidof ${process}")
|
|
||||||
if [ ${#PID} -eq 0 ]; then
|
|
||||||
fct_erreur 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Traitement
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
check_process
|
|
||||||
fct_erreur 0
|
|
@ -1,50 +1,49 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------------------------------------------
|
||||||
# Script : ctl_vm.sh
|
# Script : expl_dummy_script.sh
|
||||||
# Auteur : Doug Le Tough
|
# Auteur : Doug Le Tough
|
||||||
# Date : 23-07-2017
|
# Date : 26-07-2017
|
||||||
# Version : 1.0.0
|
# Version : 1.0.0
|
||||||
# Objet : Vérifie l'état des VM de l'infrastructure
|
# Objet : Script d'exemple qui liste les VM définies dans son fichier de configuration
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------------------------------------------
|
||||||
# Mise a jour :
|
# Mise a jour :
|
||||||
#
|
#
|
||||||
# 1.0.0 23/07/2017 - Doug Le Tough - Cre : Mise en production
|
# 1.0.0 22/07/2017 - Doug Le Tough - Cre : Mise en production
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------------------------------------------
|
||||||
|
# Dependances : Aucune
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------------------------------------------
|
||||||
# Liste des options et arguments:
|
# Liste des options et arguments:
|
||||||
#
|
#
|
||||||
# Ce script n'accepte *aucune* option
|
# @OPT: f:list_vm:list_vm:1/1:true:::
|
||||||
#
|
#
|
||||||
# @OPT: f:bidon::::::
|
#------------------------------------------------------------------------------------------------------------------
|
||||||
|
# Liste des paramètres de configuration:
|
||||||
|
#
|
||||||
|
# DUMMY_VAR="Variable bidon pour test"
|
||||||
|
# TETALAB_VM[0]=sousetsukenlocal.tetalab.org
|
||||||
|
# TETALAB_VM[1]=jimmy.local.tetalab.org
|
||||||
|
# TETALAB_VM[2]=billy.local.tetalab.org
|
||||||
|
# TETALAB_VM[3]=marian.local.tetalab.org
|
||||||
|
# TETALAB_VM[4]=sonny.local.tetalab.org
|
||||||
|
# TETALAB_VM[5]=web.local.tetalab.org
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------------------------------------------
|
||||||
# Liste des erreurs:
|
# Liste des erreurs:
|
||||||
#
|
#
|
||||||
# 2 | erreur | stop | ${ERROR}
|
# 2 | erreur | stop | ${ERROR}
|
||||||
# 3 | erreur | continu | ${ERROR}
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des paramètres de configuration:
|
|
||||||
#
|
|
||||||
# NUC=nuc.local.tetalab.org
|
|
||||||
# NUC_SSH_PORT=2022
|
|
||||||
# IRC_BOT=/usr/local/bin/tetalab/ircbot.py
|
|
||||||
# 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
|
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------------------------------------------
|
||||||
##
|
##
|
||||||
## Syntaxe :
|
## Syntaxe :
|
||||||
## --------
|
## --------
|
||||||
##
|
##
|
||||||
## prompt> ctl_vm.sh
|
## prompt> expl_dummy_script.sh [-list_vm false]
|
||||||
##
|
##
|
||||||
## ex:
|
## ex:
|
||||||
## ctl_vm.sh
|
## expl_dummy_script.sh
|
||||||
##
|
##
|
||||||
## Prérequis:
|
## Prérequis:
|
||||||
## ----------
|
## ----------
|
||||||
@ -52,8 +51,9 @@
|
|||||||
##
|
##
|
||||||
## Fonctionnement:
|
## Fonctionnement:
|
||||||
## ---------------
|
## ---------------
|
||||||
## Depuis sousetsuken se connecte sur le Nuc et vérifie l'état des VM inscrite dans le fichier de configuration
|
## Affiche sa configuration et liste les VM listées dans son fichier de configuration (TETALAB_VM[*]).
|
||||||
## et notifie les incidents sur freenode.net#tetalab
|
##
|
||||||
|
## Si l'option -list_vm est positionnée à false, le script ne fait qu'afficher sa configuration.
|
||||||
##
|
##
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------------------------------------------
|
||||||
# Initialisation de l'environement
|
# Initialisation de l'environement
|
||||||
@ -68,7 +68,7 @@ fi
|
|||||||
source /etc/profile.d/tetalab.sh
|
source /etc/profile.d/tetalab.sh
|
||||||
|
|
||||||
if [ ! -f ${NC_EXPL_CFG}/init.conf ]; then
|
if [ ! -f ${NC_EXPL_CFG}/init.conf ]; then
|
||||||
echo "Le fichier d'initialisation du socle \${NC_EXPL_CFG}/init.conf n'existe pas !"
|
echo "Le fichier d'initialisation du socle \${NC_EXPL_CFG}/init.conf n'éxiste pas !"
|
||||||
echo "Arrêt du script par sécurité"
|
echo "Arrêt du script par sécurité"
|
||||||
exit 250
|
exit 250
|
||||||
fi
|
fi
|
||||||
@ -86,25 +86,15 @@ function check_config
|
|||||||
ERROR="Fichier de configuration ${SH_FICCFG} absent ou illisible"
|
ERROR="Fichier de configuration ${SH_FICCFG} absent ou illisible"
|
||||||
fct_erreur 2
|
fct_erreur 2
|
||||||
fi
|
fi
|
||||||
if [ ${#NUC} -eq 0 ]; then
|
if [ ${#DUMMY_VAR} -eq 0 ]; then
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: NUC"
|
ERROR="Paramètre manquant ou vide dans le fichier de configuration: DUMMY_VAR"
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#NUC_SSH_PORT} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: NUC_SSH_PORT"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#IRC_BOT} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: IRC_BOT"
|
|
||||||
fct_erreur 2
|
fct_erreur 2
|
||||||
fi
|
fi
|
||||||
if [ ${#TETALAB_VM[*]} -eq 0 ]; then
|
if [ ${#TETALAB_VM[*]} -eq 0 ]; then
|
||||||
ERROR="Aucune VM définie dans le fichier de configuration"
|
ERROR="Aucune VM définie dans le fichier de configuration"
|
||||||
fct_erreur 2
|
fct_erreur 2
|
||||||
fi
|
fi
|
||||||
fct_message " * NUC: ${NUC}"
|
fct_message " * DUMMY_VAR: ${DUMMY_VAR}"
|
||||||
fct_message " * NUC_SSH_PORT: ${NUC_SSH_PORT}"
|
|
||||||
fct_message " * IRC_BOT: ${IRC_BOT}"
|
|
||||||
INDEX=0
|
INDEX=0
|
||||||
for VM in ${TETALAB_VM[@]}
|
for VM in ${TETALAB_VM[@]}
|
||||||
do
|
do
|
||||||
@ -113,40 +103,23 @@ function check_config
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function check_vm
|
function list_vm
|
||||||
{
|
{
|
||||||
fct_message "Vérification de l'état des VM:" -color jaune
|
if [ "${list_vm}" == "true" ]; then
|
||||||
|
fct_message "Liste des VM définies dans ${SH_FICCFG}:" -color jaune
|
||||||
|
INDEX=0
|
||||||
for VM in ${TETALAB_VM[@]}
|
for VM in ${TETALAB_VM[@]}
|
||||||
do
|
do
|
||||||
VM_STATUS=$(ssh ${NUC} -p ${NUC_SSH_PORT} "/usr/bin/sudo virsh domstate ${VM} 2>/dev/null | grep running | wc -l")
|
fct_message " * VM[${INDEX}]: ${VM}"
|
||||||
if [ ! ${VM_STATUS} -eq 1 ]; then
|
INDEX=$(( INDEX+1 ))
|
||||||
VM_STATUS=$(ssh ${NUC} -p ${NUC_SSH_PORT} "/usr/bin/sudo virsh domstate ${VM} 2>/dev/null | head -n1")
|
|
||||||
VM_STATUS="${VM}: VM is ${VM_STATUS}"
|
|
||||||
fct_message " - ${VM_STATUS}" -color rose
|
|
||||||
MESSAGE="${MESSAGE}|||${VM_STATUS}"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
VM_STATUS="${VM}: VM is running"
|
|
||||||
fct_message " - ${VM_STATUS}" -color vert
|
|
||||||
done
|
done
|
||||||
}
|
|
||||||
|
|
||||||
function send_message
|
|
||||||
{
|
|
||||||
if [ ${#MESSAGE} -eq 0 ]; then
|
|
||||||
fct_message "Aucun message à envoyer" -color jaune
|
|
||||||
fct_erreur 0
|
|
||||||
fi
|
fi
|
||||||
fct_message "Envoi du message ${MESSAGE}" -color jaune
|
|
||||||
${IRC_BOT} "${MESSAGE}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------------------------------------------
|
||||||
# Traitement
|
# Traitement
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
MESSAGE=""
|
|
||||||
check_config
|
check_config
|
||||||
check_vm
|
list_vm
|
||||||
send_message
|
|
||||||
fct_erreur 0
|
fct_erreur 0
|
@ -1,166 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Script : expl_refresh_thsf_site.sh
|
|
||||||
# Auteur : Doug Le Tough
|
|
||||||
# Date : 23-07-2017
|
|
||||||
# Version : 1.0.0
|
|
||||||
# Objet : Permet la mise à jour du site du THSF à partir du dépôt git
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# 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:
|
|
||||||
#
|
|
||||||
# THSF_DIR=/var/www/www.thsf.net
|
|
||||||
# THSF_GIT_URL=ssh://git@jimmy:/fatalerrors/thsf-pico
|
|
||||||
# THSF_GIT_USER=asr
|
|
||||||
# THSF_HTTPD_USER=apache
|
|
||||||
# THSF_DIR_MODE=755
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des erreurs:
|
|
||||||
#
|
|
||||||
# 2 | erreur | stop | ${ERROR}
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
##
|
|
||||||
## Syntaxe :
|
|
||||||
## --------
|
|
||||||
##
|
|
||||||
## prompt> expl_refresh_thsf_site.sh
|
|
||||||
##
|
|
||||||
## ex:
|
|
||||||
## expl_refresh_thsf_site.sh
|
|
||||||
##
|
|
||||||
## Prérequis:
|
|
||||||
## ----------
|
|
||||||
## - Le script doit être executé par l'utilisateur asr sur marian
|
|
||||||
##
|
|
||||||
## Fonctionnement:
|
|
||||||
## ---------------
|
|
||||||
## Sur marian: Vérifie les différences entre la copie local du dépôt du site du THSF et le dépôt git.
|
|
||||||
## Met à jour a copie locale si nécessaire.
|
|
||||||
##
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# 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 [ ${#THSF_DIR} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: THSF_DIR"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#THSF_DIR_MODE} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: THSF_DIR_MODE"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#THSF_HTTPD_USER} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: THSF_HTTPD_USER"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#THSF_GIT_URL} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: THSF_GIT_URL"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#THSF_GIT_USER} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: THSF_GIT_USER"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message " * THSF_DIR: ${THSF_DIR}"
|
|
||||||
fct_message " * THSF_DIR_MODE: ${THSF_DIR_MODE}"
|
|
||||||
fct_message " * THSF_GIT_URL: ${THSF_GIT_URL}"
|
|
||||||
fct_message " * THSF_GIT_USER: ${THSF_GIT_USER}"
|
|
||||||
fct_message " * THSF_HTTPD_USER: ${THSF_HTTPD_USER}"
|
|
||||||
}
|
|
||||||
|
|
||||||
function update_thsf
|
|
||||||
{
|
|
||||||
fct_message "Mise à jour du site du THSF:" -color jaune
|
|
||||||
if [ ! -d ${THSF_DIR} ]; then
|
|
||||||
ERROR="La copie locale du dépôt n'existe pas: ${THSF_DIR}"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Modification provisoire des droits sur ${THSF_DIR}" -color jaune
|
|
||||||
sudo chown -R ${THSF_GIT_USER}: ${THSF_DIR}
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors du changement des droits"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
cd ${THSF_DIR}
|
|
||||||
fct_message "Réinitialisation du dépot local" --color jaune
|
|
||||||
/usr/bin/git reset --hard
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la réinitialisation"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Mise à jour du dépôt local"
|
|
||||||
/usr/bin/git pull origin master
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la mise à jour"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Application des droits sur le dépôt local"
|
|
||||||
sudo chown -R ${THSF_HTTPD_USER}: ${THSF_DIR}
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'application des droits"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Application des permissions sur le dépôt local"
|
|
||||||
sudo chmod -R ${THSF_DIR_MODE} ${THSF_DIR}
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'application des permissions "
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Traitement
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
check_config
|
|
||||||
update_thsf
|
|
||||||
fct_erreur 0
|
|
@ -1,294 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Script : expl_transfert_dir.sh
|
|
||||||
# Auteur : Doug Le Tough
|
|
||||||
# Date : 22-07-2017
|
|
||||||
# Version : 1.0.0
|
|
||||||
# Objet : Permet le transfert de répertoire entre VM
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Mise a jour :
|
|
||||||
#
|
|
||||||
# 1.0.0 22/07/2017 - Doug Le Tough - Cre : Mise en production
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Dependances : Aucune
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des options et arguments:
|
|
||||||
#
|
|
||||||
# @OPT: o:src_host:src_host:1/1::::
|
|
||||||
# @OPT: o:dst_host:dst_host:1/1::::
|
|
||||||
# @OPT: o:src_dir:src_dir:1/1::::
|
|
||||||
# @OPT: o:dst_dir:dst_dir:1/1::::
|
|
||||||
# @OPT: f:create:create:1/1:false:::
|
|
||||||
# @OPT: f:dst_user:dst_user:1/1:asr:::
|
|
||||||
# @OPT: f:dst_group:dst_group:1/1:asr:::
|
|
||||||
# @OPT: f:dst_mode:dst_mode:1/1:755:::
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des erreurs:
|
|
||||||
#
|
|
||||||
# 2 | erreur | stop | ${ERROR}
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
##
|
|
||||||
## Syntaxe :
|
|
||||||
## --------
|
|
||||||
##
|
|
||||||
## prompt> expl_transfert_dir.sh -src_host <VM1> -dst_host <VM2> -src_dir <DIR1> -dst_dir <DIR2> [-create true] [-dst_user <USER>] [-dst_group <GROUP>] [-dst_mode <MODE>]
|
|
||||||
##
|
|
||||||
## ex: expl_transfert_dir.sh -src_host marian -dst_host jimmy -src_dir /etc/httpd -dst_dir /home/doug -create true -dst_user doug -dst_group wheel -dst_mode 644
|
|
||||||
##
|
|
||||||
## Prérequis:
|
|
||||||
## ----------
|
|
||||||
## - Le script doit être executé par l'utilisateur asr sur sousetsuken
|
|
||||||
##
|
|
||||||
## Fonctionnement:
|
|
||||||
## ---------------
|
|
||||||
## Récupère sur sousetsuken depuis src_host le contenu du répertoire src_dir et le copie dans le répertoire
|
|
||||||
## dst_dir sur dst_host.
|
|
||||||
##
|
|
||||||
## Si l'option facultative -create est positionnée à true, le répertoire de destination sera créé.
|
|
||||||
## Par défaut cette option vaut false.
|
|
||||||
##
|
|
||||||
## Si le répertoire de destination n'existe pas et si l'option -create ne vaut pas true, le script remontera
|
|
||||||
## une erreur.
|
|
||||||
##
|
|
||||||
## Si le répertoire de destination existe et l'option -create vaut true, le transfert aura lieu normalement.
|
|
||||||
##
|
|
||||||
## Tous les noms de répertoires doivent être des chemins absolus.
|
|
||||||
##
|
|
||||||
## Les options -dst_user, -dst_group et -dst_mode permettent de gérer les droits et permissions sur le
|
|
||||||
## répertoire copié
|
|
||||||
##
|
|
||||||
##
|
|
||||||
## ATTENTION:
|
|
||||||
## - Le script transfert LE CONTENU du répertoire source
|
|
||||||
## - Le script modifie les droits et permissions du répertoire de destination, soyez prudent lorsque le répertoire
|
|
||||||
## existe déjà.
|
|
||||||
##
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# 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_hosts
|
|
||||||
{
|
|
||||||
for HOST in ${src_host} ${dst_host}
|
|
||||||
do
|
|
||||||
if [ $(host ${HOST} | grep "Host ${HOST} not found: 3(NXDOMAIN)" | wc -l) -eq 1 ]; then
|
|
||||||
ERROR="${HOST} n'est pas un nom d'hôte valide"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
function check_dirs
|
|
||||||
{
|
|
||||||
fct_message "Vérification du répertoire source ${src_dir} sur ${src_host}" -color jaune
|
|
||||||
ssh ${src_host} "sudo find ${ROOT_SRC_DIR} -maxdepth 1 -type d -name ${BASE_SRC_DIR} >/dev/null 2>&1"
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Le répertoire ${src_host}:${src_dir} n'existe pas"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ $(ssh ${src_host} "sudo find ${ROOT_SRC_DIR} -maxdepth 1 -type d -name ${BASE_SRC_DIR}" | wc -l) -eq 0 ]; then
|
|
||||||
ERROR="Le répertoire ${src_host}:${src_dir} n'existe pas"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ "${create}" != "true" ]; then
|
|
||||||
fct_message "Vérification du répertoire destination ${dst_dir} sur ${dst_host}" -color jaune
|
|
||||||
ssh ${dst_host} "sudo find ${ROOT_DST_DIR} -maxdepth 1 -type d -name ${BASE_DST_DIR} >/dev/null 2>&1"
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Le répertoire ${dst_host}:${dst_dir} n'existe pas"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ $(ssh ${dst_host} "sudo find ${ROOT_DST_DIR} -maxdepth 1 -type d -name ${BASE_DST_DIR} | wc -l") -eq 0 ]; then
|
|
||||||
ERROR="Le répertoire ${dst_host}:${dst_dir} n'existe pas"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function check_user
|
|
||||||
{
|
|
||||||
if [ ! $(ssh ${dst_host} "sudo cat /etc/passwd | grep -E "^${dst_user}\:" | wc -l") -eq 1 ]; then
|
|
||||||
ERROR="L'utilisateur ${dst_user} n'existe pas sur ${dst_host}"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function check_group
|
|
||||||
{
|
|
||||||
if [ ! $(ssh ${dst_host} "sudo cat /etc/group | grep -E "^${dst_group}\:" | wc -l") -eq 1 ]; then
|
|
||||||
ERROR="Le groupe ${dst_group} n'existe pas sur ${dst_host}"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function create_dst_dir
|
|
||||||
{
|
|
||||||
fct_message "Création du répertoire de destination ${dst_host}:${dst_dir}" -color jaune
|
|
||||||
ssh ${dst_host} "sudo mkdir -p ${dst_dir}"
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la création du répertoire de destination"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_src_archive
|
|
||||||
{
|
|
||||||
fct_message "Création de l'archive /tmp/${ARCHIVE_NAME} du répertoire du répertoire ${src_host}:${src_dir}" -color jaune
|
|
||||||
ssh ${src_host} "sudo tar -C ${src_dir} -czf /tmp/${ARCHIVE_NAME} ./"
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la création de l'archive du répertoire source (1)"
|
|
||||||
fct_message ${ERROR} -color rouge
|
|
||||||
fct_erreur 3
|
|
||||||
fct_erreur 1
|
|
||||||
fi
|
|
||||||
ssh ${src_host} "sudo chown asr: /tmp/${ARCHIVE_NAME}"
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la création de l'archive du répertoire source (2)"
|
|
||||||
fct_message ${ERROR} -color rouge
|
|
||||||
fct_erreur 3
|
|
||||||
fct_erreur 1
|
|
||||||
fi
|
|
||||||
fct_message "Récupération de l'archive /tmp/${ARCHIVE_NAME} depuis ${src_host}" -color jaune
|
|
||||||
scp -q ${src_host}:/tmp/${ARCHIVE_NAME} /tmp
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la récupération de l'archive du répertoire source"
|
|
||||||
fct_message ${ERROR} -color rouge
|
|
||||||
fct_erreur 3
|
|
||||||
fct_erreur 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function cp_archive
|
|
||||||
{
|
|
||||||
fct_message "Copie de l'archive locale /tmp/${ARCHIVE_NAME} vers ${dst_host}:/tmp/${ARCHIVE_NAME}" -color jaune
|
|
||||||
scp -q /tmp/${ARCHIVE_NAME} ${dst_host}:/tmp/${ARCHIVE_NAME}
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la copie de l'archive"
|
|
||||||
fct_message ${ERROR} -color rouge
|
|
||||||
fct_erreur 3
|
|
||||||
fct_erreur 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function untar_archive
|
|
||||||
{
|
|
||||||
fct_message "Décompression de l'archive /tmp/${ARCHIVE_NAME} vers ${dst_host}:${dst_dir}" -color jaune
|
|
||||||
ssh ${dst_host} "sudo tar -C ${dst_dir} -xzf /tmp/${ARCHIVE_NAME}"
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la décompression de l'archive"
|
|
||||||
fct_message ${ERROR} -color rouge
|
|
||||||
fct_erreur 3
|
|
||||||
fct_erreur 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function set_rights
|
|
||||||
{
|
|
||||||
fct_message "Application des droits ${dst_user}:${dst_group} sur ${dst_host}:${dst_dir}" -color jaune
|
|
||||||
ssh ${dst_host} "sudo chown -R ${dst_user}:${dst_group} ${dst_dir}"
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'application des droits"
|
|
||||||
fct_message ${ERROR} -color rouge
|
|
||||||
fct_erreur 3
|
|
||||||
fct_erreur 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function set_permissions
|
|
||||||
{
|
|
||||||
fct_message "Application des permission ${dst_mode} sur ${dst_host}:${dst_dir}" -color jaune
|
|
||||||
ssh ${dst_host} "sudo chmod -R ${dst_mode} ${dst_dir}"
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'application des permissions"
|
|
||||||
fct_message ${ERROR} -color rouge
|
|
||||||
fct_erreur 3
|
|
||||||
fct_erreur 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function rm_archives
|
|
||||||
{
|
|
||||||
fct_message "Suppression de l'archive /tmp/${ARCHIVE_NAME} sur ${src_host}" -color jaune
|
|
||||||
ssh ${src_host} "sudo rm -Rf /tmp/${ARCHIVE_NAME}"
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la suppression de l'archive"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Suppression de l'archive locale /tmp/${ARCHIVE_NAME}" -color jaune
|
|
||||||
sudo rm -Rf /tmp/${ARCHIVE_NAME}
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la suppression de l'archive"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Suppression de l'archive /tmp/${ARCHIVE_NAME} sur ${dst_host}" -color jaune
|
|
||||||
ssh ${dst_host} "sudo rm -Rf /tmp/${ARCHIVE_NAME}"
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la suppression de l'archive"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Traitement
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
ROOT_SRC_DIR=$(dirname ${src_dir})
|
|
||||||
BASE_SRC_DIR=$(basename ${src_dir})
|
|
||||||
ROOT_DST_DIR=$(dirname ${dst_dir})
|
|
||||||
BASE_DST_DIR=$(basename ${dst_dir})
|
|
||||||
# Génère une chaine aléatoire
|
|
||||||
RND=$(dd if=/dev/urandom bs=3 count=40 2>/dev/null | md5sum | cut -d' ' -f1)
|
|
||||||
# Le nom de l'archive contenant les documents à récupérer
|
|
||||||
ARCHIVE_NAME=${RND}.tgz
|
|
||||||
|
|
||||||
check_hosts
|
|
||||||
check_dirs
|
|
||||||
check_user
|
|
||||||
check_group
|
|
||||||
if [ "${create}" == "true" ]; then
|
|
||||||
create_dst_dir
|
|
||||||
fi
|
|
||||||
get_src_archive
|
|
||||||
cp_archive
|
|
||||||
untar_archive
|
|
||||||
set_rights
|
|
||||||
set_permissions
|
|
||||||
rm_archives
|
|
||||||
|
|
||||||
fct_erreur 0
|
|
@ -1,309 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Script : sys_create_vhost.sh
|
|
||||||
# Auteur : Doug Le Tough
|
|
||||||
# Date : 22-07-2017
|
|
||||||
# Version : 1.0.0
|
|
||||||
# Objet : Création d'un VHOST sur le rproxy et sur l'hôte du backend. le rproxy comme le backend
|
|
||||||
# sont considérés être des serveurs Apache. Ce script ajoute également le domaine passé
|
|
||||||
# en argument de la liste des domaines gérés par Dehydrated.
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Mise a jour :
|
|
||||||
#
|
|
||||||
# 1.0.0 22/07/2017 - Doug Le Tough - Cre : Mise en production
|
|
||||||
# 1.1.0 26/07/2017 - Doug Le Tough - Evo : Ajout vérification de la configuration
|
|
||||||
# Ajout création du répertoire du backend
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Dependances : Aucune
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des options et arguments:
|
|
||||||
#
|
|
||||||
# @OPT: o:domain:domain:1/1::::
|
|
||||||
# @OPT: o:backend_host:backend_host:1/1::::
|
|
||||||
# @OPT: o:backend_port:backend_port:1/1::::
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des erreurs:
|
|
||||||
#
|
|
||||||
# 2 | erreur | stop | ${ERROR}
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des paramètres de configuration définis dans le fichier de configuration du script:
|
|
||||||
#
|
|
||||||
# RPROXY_VHOST_TEMPLATE=rproxy_template.conf
|
|
||||||
# REMOTE_VHOST_TEMPLATE=backend_template.conf
|
|
||||||
# DEHYDRATED_DOMAIN_LIST=/etc/dehydrated/domains.txt
|
|
||||||
# HTTPD_PATH=/etc/httpd/sites-available
|
|
||||||
# WWW_ROOT_DIR=/var/www
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
##
|
|
||||||
## Syntaxe :
|
|
||||||
## --------
|
|
||||||
##
|
|
||||||
## prompt> sys_create_vhost.sh -domain <DOMAIN.TLD> [-backend_host <BACKEND_HOST>] -backend_port <BACKEND_PORT>
|
|
||||||
##
|
|
||||||
## ex: sys_create_vhost.sh -domain pad.tetalab.org -backend_host jimmy.local.tetalab.org -backend_port 9001
|
|
||||||
##
|
|
||||||
## Prérequis:
|
|
||||||
## ----------
|
|
||||||
## - Le script doit être executé par l'utilisateur asr sur le rproxy (sousetsuken)
|
|
||||||
##
|
|
||||||
## Fonctionnement:
|
|
||||||
## ---------------
|
|
||||||
## Crée le fichier de configuration sur le rproxy à partir du fichiers modèle local_site_template.conf
|
|
||||||
## ainsi que le fichier de configuration sur l'hôte du backend à partir du fichier modèle remote_site_template.conf.
|
|
||||||
##
|
|
||||||
## Les deux fichiers modèles sont situés dans le répertoire NC_EXPL_MOD.
|
|
||||||
##
|
|
||||||
## Remarque importante: Ce script n'active *PAS* le virtualhost et ne redémarre *PAS* les serveurs Apache.
|
|
||||||
##
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# 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
|
|
||||||
|
|
||||||
IP_ADDR=$(host ${backend_host} | rev | cut -d' ' -f1 | rev)
|
|
||||||
IS_PRESENT=$(grep -E ^${domain}$ ${DEHYDRATED_DOMAIN_LIST} | wc -l)
|
|
||||||
REMOTE_HTTP_PATH=${backend_host}:${HTTPD_PATH}
|
|
||||||
REPLACE_DOMAIN="s/SITE_NAME/${domain}/g"
|
|
||||||
REPLACE_HOST="s/SITE_HOST/${backend_host}/g"
|
|
||||||
REPLACE_IP_ADDR="s/SITE_IP/${IP_ADDR}/g"
|
|
||||||
REPLACE_SITE_PORT="s/SITE_PORT/${backend_port}/"
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# 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 [ ${#RPROXY_VHOST_TEMPLATE} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: RPROXY_VHOST_TEMPLATE"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#REMOTE_VHOST_TEMPLATE} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: REMOTE_VHOST_TEMPLATE"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#DEHYDRATED_DOMAIN_LIST} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: DEHYDRATED_DOMAIN_LIST"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#HTTPD_PATH} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: HTTPD_PATH"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
if [ ${#WWW_ROOT_DIR} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: WWW_ROOT_DIR"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message " * RPROXY_VHOST_TEMPLATE: ${RPROXY_VHOST_TEMPLATE}"
|
|
||||||
fct_message " * REMOTE_VHOST_TEMPLATE: ${REMOTE_VHOST_TEMPLATE}"
|
|
||||||
fct_message " * DEHYDRATED_DOMAIN_LIST: ${DEHYDRATED_DOMAIN_LIST}"
|
|
||||||
fct_message " * HTTPD_PATH: ${HTTPD_PATH}"
|
|
||||||
fct_message " * WWW_ROOT_DIR: ${WWW_ROOT_DIR}"
|
|
||||||
fct_message " * Domain: ${domain}"
|
|
||||||
fct_message " * Backend host: ${backend_host}"
|
|
||||||
fct_message " * Backend port: ${backend_port}"
|
|
||||||
}
|
|
||||||
|
|
||||||
function check_port
|
|
||||||
{
|
|
||||||
if [ ! ${backend_port} -gt 0 ] 2>/dev/null || [ ! ${backend_port} -lt 65535 ] 2>/dev/null; then
|
|
||||||
ERROR="Le numéro de port doit être compris entre 0 et 65535"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function check_templates
|
|
||||||
{
|
|
||||||
fct_message "Vérification de la présence du fichier modèle ${NC_EXPL_MOD}/${RPROXY_VHOST_TEMPLATE}" -color jaune
|
|
||||||
if [ ! -r ${NC_EXPL_MOD}/${RPROXY_VHOST_TEMPLATE} ]; then
|
|
||||||
ERROR="${NC_EXPL_MOD}/${RPROXY_VHOST_TEMPLATE} n'existe pas ou n'est pas lisible"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Vérification de la présence du fichier modèle ${NC_EXPL_MOD}/${REMOTE_VHOST_TEMPLATE}" -color jaune
|
|
||||||
if [ ! -r ${NC_EXPL_MOD}/${REMOTE_VHOST_TEMPLATE} ]; then
|
|
||||||
ERROR="${NC_EXPL_MOD}/${REMOTE_VHOST_TEMPLATE} n'existe pas ou n'est pas lisible"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function create_rproxy_conf
|
|
||||||
{
|
|
||||||
fct_message "Création de la configuration du rproxy:" -color jaune
|
|
||||||
fct_message " * Domaine: ${domain}"
|
|
||||||
fct_message " * Hôte : ${backend_host}"
|
|
||||||
fct_message " * Port: ${backend_port}"
|
|
||||||
sed -s ${REPLACE_DOMAIN} ${NC_EXPL_MOD}/${RPROXY_VHOST_TEMPLATE} > ${NC_EXPL_TMP}/${domain}.conf_${SH_SESSION_ID}.tmp
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la création de la configuration du rproxy (1)"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
sed -i ${REPLACE_HOST} ${NC_EXPL_TMP}/${domain}.conf_${SH_SESSION_ID}.tmp
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la création de la configuration du rproxy (2)"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
sed -i ${REPLACE_SITE_PORT} ${NC_EXPL_TMP}/${domain}.conf_${SH_SESSION_ID}.tmp
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la création de la configuration du rproxy (3)"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Installation de la configuration du rproxy vers ${HTTPD_PATH}/${domain}.conf" -color jaune
|
|
||||||
sudo cp ${NC_EXPL_TMP}/${domain}.conf_${SH_SESSION_ID}.tmp ${HTTPD_PATH}/${domain}.conf
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'installation de la configuration du rproxy"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Application des droits sur ${HTTPD_PATH}/${domain}.conf" -color jaune
|
|
||||||
sudo chown root: ${HTTPD_PATH}/${domain}.conf
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'application des droits."
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Application des permissions sur ${HTTPD_PATH}/${domain}.conf" -color jaune
|
|
||||||
sudo chmod 644 ${HTTPD_PATH}/${domain}.conf
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'application des permissions"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function create_backend_conf
|
|
||||||
{
|
|
||||||
fct_message "Création de la configuration du backend:" -color jaune
|
|
||||||
fct_message " * Domaine: ${domain}"
|
|
||||||
fct_message " * Addresse IP du backend: ${IP_ADDR}"
|
|
||||||
fct_message " * Port: ${backend_port}"
|
|
||||||
sed -s ${REPLACE_DOMAIN} ${NC_EXPL_MOD}/${REMOTE_VHOST_TEMPLATE} > ${NC_EXPL_TMP}/${domain}.conf_${SH_SESSION_ID}.tmp
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la création de la configuration du backend (1)"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
sed -i ${REPLACE_IP_ADDR} ${NC_EXPL_TMP}/${domain}.conf_${SH_SESSION_ID}.tmp
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la création de la configuration du backend (2)"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
sed -i ${REPLACE_SITE_PORT} ${NC_EXPL_TMP}/${domain}.conf_${SH_SESSION_ID}.tmp
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la création de la configuration du backend (3)"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Installation de la configuration du backend sur ${backend_host}" -color jaune
|
|
||||||
scp -q ${NC_EXPL_TMP}/${domain}.conf_${SH_SESSION_ID}.tmp ${backend_host}:/tmp/${domain}.conf
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'installation de la configuration du backend (1)"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
ssh ${backend_host} "sudo mv /tmp/${domain}.conf ${HTTPD_PATH}/${domain}.conf"
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'installation de la configuration du backend (2)"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Application des droits sur le fichier de configuration du backend"
|
|
||||||
ssh ${backend_host} "sudo chown root: ${HTTPD_PATH}/${domain}.conf"
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'application des droits sur la configuration du backend"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Application des permissions sur le fichier de configuration du backend"
|
|
||||||
ssh ${backend_host} "sudo chmod 644 ${HTTPD_PATH}/${domain}.conf"
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'application des permissions sur la configuration du backend"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function create_backend_document_root
|
|
||||||
{
|
|
||||||
fct_message "Création du répertoire d'accueil du backend sur ${backend_host}" -color jaune
|
|
||||||
ssh ${backend_host} "sudo mkdir -p ${WWW_ROOT_DIR}/${domain}"
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la création du répertoire d'accueil du backend"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Application des droits sur le répertoire d'accueil du backend" -color jaune
|
|
||||||
ssh ${backend_host} "sudo chown -R apache:apache ${WWW_ROOT_DIR}/${domain}"
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de de l'application des droits sur le répertoire d'accueil du backend"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message "Application des permissions sur le répertoire d'accueil du backend" -color jaune
|
|
||||||
ssh ${backend_host} "sudo chmod -R 775 ${WWW_ROOT_DIR}/${domain}"
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de de l'application des droits sur le répertoire d'accueil du backend"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function add_domain
|
|
||||||
{
|
|
||||||
if [ ${IS_PRESENT} -eq 0 ]; then
|
|
||||||
fct_message "Ajout du domaine ${domain} aux domaines dont les certificats sont gérés par dehydrated" -color jaune
|
|
||||||
sudo echo ${domain} >> ${DEHYDRATED_DOMAIN_LIST}
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'ajout du domaine dans ${DEHYDRATED_DOMAIN_LIST}"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
fct_message "${domain} fait déjà partie de la liste des domaines gérés par dehydrated" -color jaune
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Traitement
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
check_config
|
|
||||||
check_port
|
|
||||||
check_templates
|
|
||||||
create_rproxy_conf
|
|
||||||
if [ "${#backend_host}" -gt 0 ]; then
|
|
||||||
create_backend_conf
|
|
||||||
fi
|
|
||||||
create_backend_document_root
|
|
||||||
add_domain
|
|
||||||
|
|
||||||
fct_erreur 0
|
|
@ -1,120 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Script : sys_deploy_socle.sh
|
|
||||||
# Auteur : Doug Le Tough
|
|
||||||
# Date : 22-07-2017
|
|
||||||
# Version : 1.0.0
|
|
||||||
# Objet : Déploiement du socle Bash à partir du répertoire fourni en option
|
|
||||||
# sur la VM dont le nom est passé en option
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Mise a jour :
|
|
||||||
#
|
|
||||||
# 1.0.0 22/07/2017 - Doug Le Tough - Cre : Mise en production
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Dependances : Aucune
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des options et arguments:
|
|
||||||
#
|
|
||||||
# @OPT: o:vm:vm:1/1::::
|
|
||||||
# @OPT: o:socle_dir:socle_dir:1/1::::
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des erreurs:
|
|
||||||
#
|
|
||||||
# 2 | erreur | stop | ${ERROR}
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
##
|
|
||||||
## Syntaxe :
|
|
||||||
## --------
|
|
||||||
##
|
|
||||||
## prompt> sys_deploy_socle.sh -vm <VM> -socle_dir <DIR>
|
|
||||||
##
|
|
||||||
## Prérequis:
|
|
||||||
## ----------
|
|
||||||
## - Le script doit être executé par l'utilisateur asr
|
|
||||||
##
|
|
||||||
## Fonctionnement:
|
|
||||||
## ---------------
|
|
||||||
## Installe le socle Bash à partir du répertoire passée en paramètre (socle_dir) sur la VM
|
|
||||||
## dont le nom est recu en paramètre.
|
|
||||||
##
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# 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_socle_dir
|
|
||||||
{
|
|
||||||
if [ ! -d ${socle_dir} ]; then
|
|
||||||
ERROR="Erreur le répertoire ${socle_dir} n'existe pas"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function rm_socle_dir
|
|
||||||
{
|
|
||||||
fct_message "Suppression du socle dans ${socle_dir} sur ${vm}:" -color rose
|
|
||||||
ssh ${vm} rm -Rf ${socle_dir}
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la suppression du socle sur ${vm}."
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function scp_socle_dir
|
|
||||||
{
|
|
||||||
fct_message "Copie du socle dans ${socle_dir} sur ${vm}:" -color rose
|
|
||||||
scp -q -r ${socle_dir} ${vm}:${socle_dir}
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de la copie du socle."
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_socle
|
|
||||||
{
|
|
||||||
fct_message "Installation du socle sur ${vm}:" -color rose
|
|
||||||
ssh ${vm} "cd ${socle_dir} && sudo ./install.sh"
|
|
||||||
RET_VAL=$?
|
|
||||||
if [ ! ${RET_VAL} -eq 0 ]; then
|
|
||||||
ERROR="Erreur lors de l'installation du socle."
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Traitement
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
check_socle_dir
|
|
||||||
rm_socle_dir
|
|
||||||
scp_socle_dir
|
|
||||||
install_socle
|
|
||||||
fct_erreur 0
|
|
@ -1,227 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Script : sys_refresh_ref_cron.sh
|
|
||||||
# Auteur : Doug Le Tough
|
|
||||||
# Date : 24-07-2017
|
|
||||||
# Version : 1.0.0
|
|
||||||
# Objet : Met à jour le référentiel des jobs cron de l'ensemble de l'infra
|
|
||||||
# accessible par https://ref.tetalab.org
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# 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:force:force:1/1:false:show_only::
|
|
||||||
# @OPT: f:show_only:show_only:1/1:false:force::
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des erreurs:
|
|
||||||
#
|
|
||||||
# 2 | erreur | stop | ${ERROR}
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Liste des paramètres de configuration:
|
|
||||||
#
|
|
||||||
# PGPASSFILE=/home/asr/.pgpass
|
|
||||||
# DB_TABLE=ref_cron
|
|
||||||
# TETALAB_USERS[0]=root
|
|
||||||
# TETALAB_USERS[1]=asr
|
|
||||||
# TETALAB_VM[0]=sousetsuken.local.tetalab.org
|
|
||||||
# TETALAB_VM[1]=jimmy.local.tetalab.org
|
|
||||||
# TETALAB_VM[2]=billy.local.tetalab.org
|
|
||||||
# TETALAB_VM[3]=marian.local.tetalab.org
|
|
||||||
# TETALAB_VM[4]=sonny.local.tetalab.org
|
|
||||||
# TETALAB_VM[5]=web.local.tetalab.org
|
|
||||||
#
|
|
||||||
##------------------------------------------------------------------------------------------------------------------
|
|
||||||
##
|
|
||||||
## Syntaxe :
|
|
||||||
## --------
|
|
||||||
##
|
|
||||||
## prompt> sys_refresh_ref_cron.sh [-force true] [-show_only true]
|
|
||||||
##
|
|
||||||
## Prérequis:
|
|
||||||
## ----------
|
|
||||||
## - Le script doit être executé par l'utilisateur asr
|
|
||||||
##
|
|
||||||
## Fonctionnement:
|
|
||||||
## ---------------
|
|
||||||
## Récupère l'ensemble des cronjobs des utilisateurs listés dans TETALAB_USERS
|
|
||||||
## mis en place sur les VM définies dans TETALAB_VM et les enregistre dans la table
|
|
||||||
## DB_TABLE de la base de données "referentiel".
|
|
||||||
##
|
|
||||||
## À moins que l'option -force soit passée à true, le script ne fait qu'ajouter les nouvelles
|
|
||||||
## entrées dans la base. Par défaut cette option est positionnée à false, de ce fait
|
|
||||||
## aucune données n'est supprimée dans la base y compris si le cronjob n'existe plus sur le
|
|
||||||
## système concernée.
|
|
||||||
##
|
|
||||||
## Lorsqu'un cron job est supprimé, forcer une régénération complète des entrées de la base est
|
|
||||||
## donc nécessaire (sys_refresh_ref_cron.sh -force true)
|
|
||||||
##
|
|
||||||
## L'option -show_only positionnée à true permet de lister les cronjobs installés sur les VM sans
|
|
||||||
## les enregistrer dans la base de données.
|
|
||||||
##
|
|
||||||
## Les informations de connexion à la base de données doivent être stockées dans
|
|
||||||
## le fichier PGPASSFILE sur sousetsuken au format suivant:
|
|
||||||
##
|
|
||||||
## hostname:port:database:username:password
|
|
||||||
##
|
|
||||||
## https://www.postgresql.org/docs/9.6/static/libpq-pgpass.html
|
|
||||||
##
|
|
||||||
##
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# 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 [ ! -r ${PGPASSFILE} ]; then
|
|
||||||
ERROR="Fichier des informations de connexion ${PGPASSFILE} absent ou illisible"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message " * PGPASSFILE: ${PGPASSFILE}"
|
|
||||||
if [ ${#DB_TABLE} -eq 0 ]; then
|
|
||||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: DB_TABLE"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
fct_message " * DB_TABLE: ${DB_TABLE}"
|
|
||||||
fct_message " * Force: ${force}"
|
|
||||||
fct_message " * Show only: ${show_only}"
|
|
||||||
if [ ${#TETALAB_USERS[*]} -eq 0 ]; then
|
|
||||||
ERROR="Aucune VM définie dans le fichier de configuration"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
INDEX=0
|
|
||||||
for TETALAB_USER in ${TETALAB_USERS[@]}
|
|
||||||
do
|
|
||||||
fct_message " * TETALAB_USERS[${INDEX}]: ${TETALAB_USER}"
|
|
||||||
INDEX=$(( INDEX+1 ))
|
|
||||||
done
|
|
||||||
if [ ${#TETALAB_VM[*]} -eq 0 ]; then
|
|
||||||
ERROR="Aucune VM définie dans le fichier de configuration"
|
|
||||||
fct_erreur 2
|
|
||||||
fi
|
|
||||||
INDEX=0
|
|
||||||
for VM in ${TETALAB_VM[@]}
|
|
||||||
do
|
|
||||||
fct_message " * VM[${INDEX}]: ${VM}"
|
|
||||||
INDEX=$(( INDEX+1 ))
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_db_info
|
|
||||||
{
|
|
||||||
DB_HOST=$(cat ${PGPASSFILE} | cut -d: -f1)
|
|
||||||
DB_DATABASE=$(cat ${PGPASSFILE} | cut -d: -f3)
|
|
||||||
DB_USER=$(cat ${PGPASSFILE} | cut -d: -f4)
|
|
||||||
}
|
|
||||||
|
|
||||||
function clean_table
|
|
||||||
{
|
|
||||||
if [ "${force}" == "true" ]; then
|
|
||||||
fct_message "Option -force activée: Suppression des données dans la table." -color orange
|
|
||||||
SQL="delete from ref_cron where id > 0;"
|
|
||||||
psql -q -t -h ${DB_HOST} -U ${DB_USER} -d ${DB_DATABASE} -c "${SQL}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function refresh_cronjobs
|
|
||||||
{
|
|
||||||
fct_message "Récupération des cronjobs:" -color jaune
|
|
||||||
for VM in ${TETALAB_VM[@]}
|
|
||||||
do
|
|
||||||
fct_message " * ${VM}" -color rose
|
|
||||||
for TETALAB_USER in ${TETALAB_USERS[@]}
|
|
||||||
do
|
|
||||||
fct_message " * ${TETALAB_USER}" -color orange
|
|
||||||
IFS_BAK=${IFS}
|
|
||||||
IFS=$'\n'
|
|
||||||
CRONJOBS=$(ssh ${VM} "sudo crontab -u ${TETALAB_USER} -l 2>/dev/null | grep -v '^\#' | grep -v '^$' | grep -vP '^ +$'")
|
|
||||||
for CRONJOB in ${CRONJOBS}
|
|
||||||
do
|
|
||||||
COLOR="blanc"
|
|
||||||
MESSAGE=" - ${CRONJOB}"
|
|
||||||
if [ $(echo "${CRONJOB}" | grep "run-parts" | wc -l) -eq 1 ]; then
|
|
||||||
COLOR="vert"
|
|
||||||
fi
|
|
||||||
fct_message ${MESSAGE} -color ${COLOR}
|
|
||||||
if [ "${show_only}" == "false" ]; then
|
|
||||||
if [ ${#CRONJOB} -gt 0 ]; then
|
|
||||||
fct_message " Checking database:"
|
|
||||||
MINUTES=$(echo ${CRONJOB} | cut -d' ' -f1)
|
|
||||||
HOURS=$(echo ${CRONJOB} | cut -d' ' -f2)
|
|
||||||
DAYS=$(echo ${CRONJOB} | cut -d' ' -f3)
|
|
||||||
MONTHS=$(echo ${CRONJOB} | cut -d' ' -f4)
|
|
||||||
DAYSOFWEEK=$(echo ${CRONJOB} | cut -d' ' -f5)
|
|
||||||
COMMAND=$(echo ${CRONJOB} | cut -d' ' -f6-)
|
|
||||||
REQUEST_ID_PARAMS="host='${VM}' and s_user='${TETALAB_USER}' and minutes='${MINUTES}' and hours='${HOURS}'
|
|
||||||
and days='${DAYS}' and months='${MONTHS}' and daysofweek='${DAYSOFWEEK}' and command='${COMMAND}'"
|
|
||||||
RESULT=$(psql -q -t -h ${DB_HOST} -U ${DB_USER} -d ${DB_DATABASE} -c "select ID from
|
|
||||||
ref_cron where ${REQUEST_ID_PARAMS};")
|
|
||||||
if [ ${#RESULT} -eq 0 ]; then
|
|
||||||
fct_message " -> Cronjob not in database, inserting..."
|
|
||||||
REQUEST_INSERT_PARAMS="'${VM}', '${TETALAB_USER}', '${MINUTES}',
|
|
||||||
'${HOURS}', '${DAYS}', '${MONTHS}', '${DAYSOFWEEK}', '${COMMAND}'"
|
|
||||||
psql -q -t -h ${DB_HOST} -U ${DB_USER} -d ${DB_DATABASE} -c "insert into ref_cron
|
|
||||||
(\"host\", \"s_user\", \"minutes\", \"hours\", \"days\", \"months\", \"daysofweek\", \"command\")
|
|
||||||
values (${REQUEST_INSERT_PARAMS});"
|
|
||||||
else
|
|
||||||
fct_message " -> Cronjob already in database"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
IFS=${IFS_BAK}
|
|
||||||
done
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
# Traitement
|
|
||||||
#------------------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
DB_HOST=""
|
|
||||||
DB_DATABASE=""
|
|
||||||
DB_USER=""
|
|
||||||
|
|
||||||
check_config
|
|
||||||
get_db_info
|
|
||||||
clean_table
|
|
||||||
refresh_cronjobs
|
|
||||||
fct_erreur 0
|
|
@ -1,185 +0,0 @@
|
|||||||
#!/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
|
|
@ -1,35 +0,0 @@
|
|||||||
IRC_BOT=/usr/local/bin/tetalab/ircbot.py
|
|
||||||
NRPE_CHECK_PATH=/etc/nagios/nrpe/
|
|
||||||
NRPE_CHECK_BIN=/usr/libexec/nagios/check_nrpe
|
|
||||||
INFRA_SERVER=sousetsuken.local.tetalab.org
|
|
||||||
# VM monitorée par NRPE
|
|
||||||
# ATTENTION: web n'est *volontairement* pas monitorée par NRPE
|
|
||||||
TETALAB_VM[0]=sousetsuken.local.tetalab.org
|
|
||||||
TETALAB_VM[1]=jimmy.local.tetalab.org
|
|
||||||
TETALAB_VM[2]=billy.local.tetalab.org
|
|
||||||
TETALAB_VM[3]=sonny.local.tetalab.org
|
|
||||||
TETALAB_VM[4]=marian.local.tetalab.org
|
|
||||||
# Processus monitorés indépendemment de NRPE
|
|
||||||
PROCESS[0]=sousetsuken.local.tetalab.org:/usr/sbin/httpd
|
|
||||||
PROCESS[1]=sousetsuken.local.tetalab.org:/usr/sbin/named
|
|
||||||
PROCESS[2]=sousetsuken.local.tetalab.org:/usr/sbin/ntpd
|
|
||||||
PROCESS[3]=sousetsuken.local.tetalab.org:/usr/sbin/crond
|
|
||||||
PROCESS[4]=sousetsuken.local.tetalab.org:/usr/bin/nrpe
|
|
||||||
PROCESS[5]=marian.local.tetalab.org:/usr/sbin/httpd
|
|
||||||
PROCESS[6]=marian.local.tetalab.org:/usr/sbin/ntpd
|
|
||||||
PROCESS[7]=marian.local.tetalab.org:/usr/sbin/crond
|
|
||||||
PROCESS[8]=marian.local.tetalab.org:/usr/bin/nrpe
|
|
||||||
PROCESS[9]=web.local.tetalab.org:/usr/lib/postfix/sbin/master
|
|
||||||
PROCESS[10]=sonny.local.tetalab.org:/usr/lib64/postgresql/9.6/bin/postgres
|
|
||||||
PROCESS[11]=sonny.local.tetalab.org:/usr/sbin/ntpd
|
|
||||||
PROCESS[12]=sonny.local.tetalab.org:/usr/sbin/crond
|
|
||||||
PROCESS[13]=sonny.local.tetalab.org:/usr/bin/nrpe
|
|
||||||
PROCESS[14]=jimmy.local.tetalab.org:/usr/sbin/httpd
|
|
||||||
PROCESS[15]=jimmy.local.tetalab.org:/usr/sbin/node
|
|
||||||
PROCESS[16]=jimmy.local.tetalab.org:/usr/sbin/ntpd
|
|
||||||
PROCESS[17]=jimmy.local.tetalab.org:/usr/sbin/crond
|
|
||||||
PROCESS[18]=jimmy.local.tetalab.org:/usr/bin/nrpe
|
|
||||||
PROCESS[19]=billy.local.tetalab.org:/usr/sbin/ntpd
|
|
||||||
PROCESS[20]=billy.local.tetalab.org:/usr/sbin/crond
|
|
||||||
PROCESS[21]=billy.local.tetalab.org:/usr/bin/nrpe
|
|
||||||
PROCESS[22]=billy.local.tetalab.org:/usr/sbin/httpd
|
|
@ -1,8 +0,0 @@
|
|||||||
NUC=nuc.tetalab.org
|
|
||||||
NUC_SSH_PORT=2022
|
|
||||||
IRC_BOT=/usr/local/bin/tetalab/ircbot.py
|
|
||||||
TETALAB_VM[0]=jimmy
|
|
||||||
TETALAB_VM[1]=billy
|
|
||||||
TETALAB_VM[2]=marian
|
|
||||||
TETALAB_VM[3]=sonny
|
|
||||||
TETALAB_VM[4]=web
|
|
@ -1,8 +1,5 @@
|
|||||||
PGPASSFILE=/home/asr/.pgpass
|
DUMMY_VAR="Variable bidon pour test"
|
||||||
DB_TABLE=ref_cron
|
TETALAB_VM[0]=sousetsukenlocal.tetalab.org
|
||||||
TETALAB_USERS[0]=root
|
|
||||||
TETALAB_USERS[1]=asr
|
|
||||||
TETALAB_VM[0]=sousetsuken.local.tetalab.org
|
|
||||||
TETALAB_VM[1]=jimmy.local.tetalab.org
|
TETALAB_VM[1]=jimmy.local.tetalab.org
|
||||||
TETALAB_VM[2]=billy.local.tetalab.org
|
TETALAB_VM[2]=billy.local.tetalab.org
|
||||||
TETALAB_VM[3]=marian.local.tetalab.org
|
TETALAB_VM[3]=marian.local.tetalab.org
|
@ -1,5 +0,0 @@
|
|||||||
THSF_DIR=/var/www/www.thsf.net
|
|
||||||
THSF_GIT_URL=ssh://git@jimmy:/fatalerrors/thsf-pico
|
|
||||||
THSF_GIT_USER=asr
|
|
||||||
THSF_HTTPD_USER=apache
|
|
||||||
THSF_DIR_MODE=755
|
|
1
conf/lisezmoi.txt
Normal file
1
conf/lisezmoi.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Ce repertoire recoit les fichiers de configuration utilises par les scripts
|
@ -1,5 +0,0 @@
|
|||||||
RPROXY_VHOST_TEMPLATE=rproxy_template.conf
|
|
||||||
REMOTE_VHOST_TEMPLATE=backend_template.conf
|
|
||||||
DEHYDRATED_DOMAIN_LIST=/etc/dehydrated/domains.txt
|
|
||||||
HTTPD_PATH=/etc/httpd/sites-available
|
|
||||||
WWW_ROOT_DIR=/var/www
|
|
@ -1,7 +0,0 @@
|
|||||||
SOCLE_DIR=/home/asr/socle_bash
|
|
||||||
SOCLE_GIT_URL=ssh://git@jimmy/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
|
|
@ -1,13 +0,0 @@
|
|||||||
<VirtualHost SITE_IP:SITE_PORT>
|
|
||||||
ServerName SITE_NAME
|
|
||||||
ServerAdmin bofh@tetalab.org
|
|
||||||
DocumentRoot /var/www/SITE_NAME
|
|
||||||
RemoteIPHeader X-Forwarded-For
|
|
||||||
RemoteIPInternalProxy 192.168.122.0/24
|
|
||||||
<Directory /var/www/SITE_NAME>
|
|
||||||
AllowOverride All
|
|
||||||
Require all granted
|
|
||||||
</Directory>
|
|
||||||
ErrorLog /var/log/httpd/SITE_NAME.error.log
|
|
||||||
CustomLog /var/log/httpd/SITE_NAME.access.log combined
|
|
||||||
</VirtualHost>
|
|
1
mod/lisezmoi.txt
Normal file
1
mod/lisezmoi.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Ce repertoire recoit les modeles utilises par les scripts
|
@ -1,36 +0,0 @@
|
|||||||
<VirtualHost 192.168.122.42:80>
|
|
||||||
# ReverseProxy with https redirect template
|
|
||||||
#
|
|
||||||
# Written by Doug Le Tough
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# sed -s 's/SITE_NAME/example.com/g' site_template.conf > example.org.conf
|
|
||||||
# sed -i 's/SITE_HOST/hostname.local.tetalab.org/g' example.org.conf
|
|
||||||
#
|
|
||||||
Define FQDN SITE_NAME
|
|
||||||
Define HOST SITE_HOST
|
|
||||||
Define HOST_PORT SITE_PORT
|
|
||||||
ServerName ${FQDN}
|
|
||||||
### All HTTP requests are converted to HTTPS requests
|
|
||||||
<IfModule mod_rewrite.c>
|
|
||||||
RewriteEngine On
|
|
||||||
RewriteCond %{HTTPS} off
|
|
||||||
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
|
|
||||||
</IfModule>
|
|
||||||
ErrorLog "/var/log/httpd/${FQDN}_error.log"
|
|
||||||
CustomLog "/var/log/httpd/${FQDN}_access.log" Combined
|
|
||||||
</VirtualHost>
|
|
||||||
<VirtualHost 192.168.122.42:443>
|
|
||||||
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
|
|
||||||
ServerName ${FQDN}
|
|
||||||
ProxyPreserveHost On
|
|
||||||
SSLEngine on
|
|
||||||
SSLCertificateFile /etc/dehydrated/certs/${FQDN}/cert.pem
|
|
||||||
SSLCertificateKeyFile /etc/dehydrated/certs/${FQDN}/privkey.pem
|
|
||||||
SSLCertificateChainFile /etc/dehydrated/certs/${FQDN}/fullchain.pem
|
|
||||||
RequestHeader set X_FORWARDED_PROTO 'https'
|
|
||||||
ProxyPass / http://${HOST}:${HOST_PORT}/
|
|
||||||
ProxyPassReverse / http://${HOST}:${HOST_PORT}/
|
|
||||||
ErrorLog "/var/log/httpd/${FQDN}_error.log"
|
|
||||||
CustomLog "/var/log/httpd/${FQDN}_access.log" Combined
|
|
||||||
</VirtualHost>
|
|
@ -1,2 +0,0 @@
|
|||||||
2 | erreur | stop | ${ERROR}
|
|
||||||
3 | erreur | continu | ${ERROR}
|
|
@ -1,3 +0,0 @@
|
|||||||
1 | erreur | stop | Processus inexistant sur ${vm}
|
|
||||||
2 | erreur | stop | ${ERROR}
|
|
||||||
3 | erreur | continu | ${ERROR}
|
|
@ -1,2 +0,0 @@
|
|||||||
2 | erreur | stop | ${ERROR}
|
|
||||||
3 | erreur | continu | ${ERROR}
|
|
@ -1,2 +0,0 @@
|
|||||||
2 | erreur | stop | ${ERROR}
|
|
||||||
3 | erreur | continu | ${ERROR}
|
|
@ -1,3 +0,0 @@
|
|||||||
1 | erreur | stop | Sortie du script
|
|
||||||
2 | erreur | stop | ${ERROR}
|
|
||||||
3 | erreur | exec | rm_archives
|
|
@ -1 +0,0 @@
|
|||||||
2 | erreur | stop | ${ERROR}
|
|
@ -1,2 +0,0 @@
|
|||||||
2 | erreur | stop | ${ERROR}
|
|
||||||
3 | erreur | continu | ${ERROR}
|
|
@ -1,2 +0,0 @@
|
|||||||
2 | erreur | stop | ${ERROR}
|
|
||||||
3 | erreur | continu | ${ERROR}
|
|
Loading…
Reference in New Issue
Block a user