"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
|
||||
#------------------------------------------------------------------------------------------------------------------
|
||||
# Script : ctl_vm.sh
|
||||
# Script : expl_dummy_script.sh
|
||||
# Auteur : Doug Le Tough
|
||||
# Date : 23-07-2017
|
||||
# Date : 26-07-2017
|
||||
# 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 :
|
||||
#
|
||||
# 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:
|
||||
#
|
||||
# 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:
|
||||
#
|
||||
# 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 :
|
||||
## --------
|
||||
##
|
||||
## prompt> ctl_vm.sh
|
||||
## prompt> expl_dummy_script.sh [-list_vm false]
|
||||
##
|
||||
## ex:
|
||||
## ctl_vm.sh
|
||||
## expl_dummy_script.sh
|
||||
##
|
||||
## Prérequis:
|
||||
## ----------
|
||||
@ -52,8 +51,9 @@
|
||||
##
|
||||
## Fonctionnement:
|
||||
## ---------------
|
||||
## Depuis sousetsuken se connecte sur le Nuc et vérifie l'état des VM inscrite dans le fichier de configuration
|
||||
## et notifie les incidents sur freenode.net#tetalab
|
||||
## Affiche sa configuration et liste les VM listées dans son fichier de configuration (TETALAB_VM[*]).
|
||||
##
|
||||
## Si l'option -list_vm est positionnée à false, le script ne fait qu'afficher sa configuration.
|
||||
##
|
||||
#------------------------------------------------------------------------------------------------------------------
|
||||
# Initialisation de l'environement
|
||||
@ -68,7 +68,7 @@ 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 "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
|
||||
@ -86,25 +86,15 @@ function check_config
|
||||
ERROR="Fichier de configuration ${SH_FICCFG} absent ou illisible"
|
||||
fct_erreur 2
|
||||
fi
|
||||
if [ ${#NUC} -eq 0 ]; then
|
||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: NUC"
|
||||
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"
|
||||
if [ ${#DUMMY_VAR} -eq 0 ]; then
|
||||
ERROR="Paramètre manquant ou vide dans le fichier de configuration: DUMMY_VAR"
|
||||
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 " * NUC: ${NUC}"
|
||||
fct_message " * NUC_SSH_PORT: ${NUC_SSH_PORT}"
|
||||
fct_message " * IRC_BOT: ${IRC_BOT}"
|
||||
fct_message " * DUMMY_VAR: ${DUMMY_VAR}"
|
||||
INDEX=0
|
||||
for VM in ${TETALAB_VM[@]}
|
||||
do
|
||||
@ -113,40 +103,23 @@ function check_config
|
||||
done
|
||||
}
|
||||
|
||||
function check_vm
|
||||
function list_vm
|
||||
{
|
||||
fct_message "Vérification de l'état des VM:" -color jaune
|
||||
for VM in ${TETALAB_VM[@]}
|
||||
do
|
||||
VM_STATUS=$(ssh ${NUC} -p ${NUC_SSH_PORT} "/usr/bin/sudo virsh domstate ${VM} 2>/dev/null | grep running | wc -l")
|
||||
if [ ! ${VM_STATUS} -eq 1 ]; then
|
||||
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
|
||||
}
|
||||
|
||||
function send_message
|
||||
{
|
||||
if [ ${#MESSAGE} -eq 0 ]; then
|
||||
fct_message "Aucun message à envoyer" -color jaune
|
||||
fct_erreur 0
|
||||
if [ "${list_vm}" == "true" ]; then
|
||||
fct_message "Liste des VM définies dans ${SH_FICCFG}:" -color jaune
|
||||
INDEX=0
|
||||
for VM in ${TETALAB_VM[@]}
|
||||
do
|
||||
fct_message " * VM[${INDEX}]: ${VM}"
|
||||
INDEX=$(( INDEX+1 ))
|
||||
done
|
||||
fi
|
||||
fct_message "Envoi du message ${MESSAGE}" -color jaune
|
||||
${IRC_BOT} "${MESSAGE}"
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------------------------------------------
|
||||
# Traitement
|
||||
#------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
MESSAGE=""
|
||||
check_config
|
||||
check_vm
|
||||
send_message
|
||||
list_vm
|
||||
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
|
||||
DB_TABLE=ref_cron
|
||||
TETALAB_USERS[0]=root
|
||||
TETALAB_USERS[1]=asr
|
||||
TETALAB_VM[0]=sousetsuken.local.tetalab.org
|
||||
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
|
@ -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