Scripts de gestion et de maintenance de l'infrastructure du Tetalab
ctl_all_nrpe.sh
-----------------------------------------------------------------------------------------------------------------
Script : ctl_all_nrpe.sh
Auteur : Doug Le Tough
Date : 04-10-2017
Version : 1.0.1
Objet : Fait tous les contrôles NRPE standards 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
1.0.1 04/10/2017 - Doug Le Tough - Evo : Support des espaces dans les noms de processus
1.0.2 03/11/2018 - Doug Le Tough - Evo : Contrôle supplémentaire sur processus en attente d'I/O
1.0.3 12/11/2018 - Doug Le Tough - Bug : Typo ${{CHECK} != ${CHECK}
-----------------------------------------------------------------------------------------------------------------
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.
ctl_crawler_bot.sh
-----------------------------------------------------------------------------------------------------------------
Script : ctl_crawler_bot.sh
Auteur : Doug Le Tough
Date : 23-10-2018
Version : 1.0.0
Objet : Exécute sys_block_bot.sh pour chaun des bots désignés dans ctl_crawler_bot.dat
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 23/10/21018 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> ctl_crawler_bot.sh
ex:
ctl_crawler_bot.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur Bobby.
- Le fichier ctl_crawler_bot.dat doit contenir la liste des bots à bloquer (un nom par ligne)
Fonctionnement:
---------------
Exécute sys_block_bot.sh pour chacun des noms déclarés dans ctl_crawler_bot.dat.
ctl_host_process.sh
-----------------------------------------------------------------------------------------------------------------
Script : ctl_host_process.sh
Auteur : Doug Le Tough
Date : 24-12-2017
Version : 1.0.3
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
1.0.1 13/08/2017 - Doug Le Tough - Evo : Ajout d'un timeout sur SSH
1.0.2 04/10/2017 - Doug Le Tough - Evo : Gestion des espaces dans le nom du processus
1.0.3 04/10/2017 - Doug Le Tough - Evo : Exclusion du processus courant de la liste des processus
-----------------------------------------------------------------------------------------------------------------
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.
ctl_swap_usage.sh
-----------------------------------------------------------------------------------------------------------------
Script : ctl_swap_usage.sh
Auteur : Doug Le Tough
Date : 02-02-2019
Version : 1.0.0
Objet : R2cupère la liste des processus et affiche la taille qu'ils occupent sur le swap
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 02/02/21019 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> ctl_swap_usage.sh
ex:
ctl_swap_usage.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr.
Fonctionnement:
---------------
Récupère les PID des processus à partir de ps et récupère pour chauqe processus le ataux d'occupation
de VmSwap dans /proc/<PID>/status
ctl_vm.sh
-----------------------------------------------------------------------------------------------------------------
Script : ctl_vm.sh
Auteur : Doug Le Tough
Date : 23-07-2017
Version : 1.0.0
Objet : Vérifie l'état des VM de l'infrastructure
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 23/07/2017 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> ctl_vm.sh
ex:
ctl_vm.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
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
exp_cotisation_alert.sh
-----------------------------------------------------------------------------------------------------------------
Script : exp_cotisation_alert.sh
Auteur : Doug Le Tough
Date : 30-01-2018
Version : 1.0.1
Objet : Gestion des rappels de cotisations aux membres du Tetalab
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 07/12/2017 - Doug Le Tough - Cre : Mise en production
1.0.1 30/01/2018 - Doug Le Tough - Evo : Regénère la liste des membres actifs avant d'envoyer le code d'accès
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> exp_cotisation_alert.sh
ex:
exp_cotisation_alert.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr
Fonctionnement:
---------------
Récupère la liste des membres du Tetalab dans <GARRADIN_HOST>:<GARRADIN_DB_PATH>/<GARRADIN_DB> et
envoie un mail de rappel de cotisation <BEFORE_DELAY> jours avant la date d'échéance définie par
<DEAD_LINE_DATE>.
<AFTER_DELAY> jours après <DEAD_LINE_DATE>, vérifie l'état des cotisations pour chaun des membres et
déplace les membres n'ayant pas cotisé dans la catégorie "anciens membres" et leur envoie un mail de
notification.
À la date d'échéance définie par <DEAD_LINE_DATE>, un nouveau code pour le cadenas du DD2 est généré
et envoyé par mail à chacun des membres ayant payé sa cotisation.
Les modèles des mails envoyés sont stockés dans ${NC_EXPL_MOD}.
exp_dummy_script.sh
Syntaxe :
--------
prompt> exp_dummy_script.sh [-list_vm false] [ -gen_error true ] [-argv arg1 arg2 ...]
ex:
exp_dummy_script.sh -list_vm false -gen_error true -argv plop plip plap
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr
Fonctionnement:
---------------
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.
Par défaut list_vm vaut true.
Si l'option -gen_error est positionnée à true, le script génèrera une erreur. Le but de cette option
étant d'illustrer la gestion des erreurs. Par défaut gen_error vaut false.
exp_gen_spamlists.sh
------------------------------------------------------------------------------
Script : exp_gen_spamlists.sh
Auteur : Doug Le Tough
Date : 28/02/2022
Version : 1.0.0
Objet : Genère les listes blanches et noires du serveur de
courriels à parit du dépôt Git défini par le fichier
de configuration.
------------------------------------------------------------------------------
Mise a jour :
1.0.0 28/02/2022 - Doug Le Tough - Cre : Mise en production
1.0.1 21/06/2022 - Doug Le Tough - Evo : Filtrage des # pour faire
plaisir à tTh
------------------------------------------------------------------------------
Syntaxe :
--------
prompt> exp_gen_spamlists.sh
ex:
exp_gen_spamlists.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr
Fonctionnement:
---------------
Clone le dépôt Git et génère les tables de hashs à destination de postfix et
et les listes blanches et noires à destination de spamassassin.
Redémarre postfix et spamasassin pour prise en compte des modifications
exp_mailman_sa-learn_spam.sh
-----------------------------------------------------------------------------------------------------------------
Script : exp_mailman_sa-learn_spam.sh
Auteur : Doug Le Tough
Date : 16-08-2017
Version : 1.0.0
Objet : Passe les messages en attente de la liste de diffusion à spamassassin
afin qu'il les traite comme du spam et les supprime de la liste d'attente
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 16/08/2017 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> exp_mailman_sa-learn_spam.sh -list <LIST>
ex:
exp_mailman_sa-learn_spam.sh -list contact_request
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
Fonctionnement:
---------------
Depuis sousetsuken se connecte sur MAILMAN_HOST, récupère la liste des mails en attente d'approbation
pour la liste de diffusion LIST et les donne au filtre bayesien sa-learn afin que spamassassin les traite
comme des spams.
Une fois les mails traités, ils sont supprimés de la liste d'attente d'approbation.
exp_proc_ram_usage.sh
-----------------------------------------------------------------------------------------------------------------
Script : exp_proc_ram_usage.sh
Auteur : Doug Le Tough
Date : 29-04-2018
Version : 1.0.0
Objet : Affiche la quantité de RAM totale utilisée par un processus défini par son nom executable et/ou
son PID
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 29/04/2017 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> exp_proc_ram_usage.sh <-exe <EXE> | -pid <PID>)
ex:
exp_proc_ram_usage.sh -exe httpd
exp_proc_ram_usage.sh -pid 42713
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr
Fonctionnement:
---------------
Récupère la taille proportionnelle de l'utilisation de la RAM (PSS) pour un processus dont le PID et/ou le nom
d'executable est passé en option.
La taille proportionnelle de l'utilisation de la RAM est récupérée à partir de la sortie de la commande "smem".
Si aucune option n'est passée alors la taille de la RAM utilisée totale est affichée.
exp_refresh_beta_thsf_site.sh
------------------------------------------------------------------------------
Script : exp_refresh_beta_thsf_site.sh
Auteur : Doug Le Tough
Date : 24/02/2023
Version : 2.0.0
Objet : Permet la mise à jour du site du THSF à partir du dépôt git
------------------------------------------------------------------------------
Mise a jour :
1.0.0 04/04/2023 - Doug Le Tough - Cre : Mise en production
------------------------------------------------------------------------------
Syntaxe :
--------
prompt> exp_refresh_beta_thsf_site.sh -branch <branch>
ex:
exp_refresh_beta_thsf_site.sh -branch <beta>
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 beta du THSF et le dépôt git.
Met à jour a copie locale si nécessaire.
exp_refresh_tetalab_site.sh
------------------------------------------------------------------------------
Script : exp_refresh_tetalab_site.sh
Auteur : Doug Le Tough
Date : 26-01-2018
Version : 1.0.0
Objet : Permet la mise à jour des pages du Tetalab à partir du dépôt git
------------------------------------------------------------------------------
Mise a jour :
1.0.0 26/01/2018 - Doug Le Tough - Cre : Mise en production
------------------------------------------------------------------------------
Syntaxe :
--------
prompt> exp_refresh_tetalab_site.sh
ex:
exp_refresh_tetalab_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 Tetalab et le dépôt git.
Met à jour a copie locale si nécessaire.
exp_refresh_thsf_site.sh
------------------------------------------------------------------------------
Script : exp_refresh_thsf_site.sh
Auteur : Doug Le Tough
Date : 24/04/2023
Version : 3.0.0
Objet : Permet la mise à jour du site du THSF à partir du dépôt git
------------------------------------------------------------------------------
Syntaxe :
--------
prompt> exp_refresh_thsf_site.sh [-branch <branch>]
ex:
exp_refresh_thsf_site.sh -branch beta
La branche par défaut est "master".
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur marian
Fonctionnement:
---------------
Clone ou récupère les différences du dépôt Git défini dans le fichier
de configuration, arrête, reconstruit et démarre le conteneur.
exp_transfert_dir.sh
-----------------------------------------------------------------------------------------------------------------
Script : exp_transfert_dir.sh
Auteur : Doug Le Tough
Date : 18-08-2017
Version : 1.0.1
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
1.0.1 18/08/2017 - Doug Le Tough - Cor : Bugfix: RET_VAL non définie dans certaines fonctions
1.0.2 19-02-2018 - Doug Le Tough - Evo : Utilisation du repertoire temporaire ${SH_TMP_DIR}
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> exp_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: exp_transfert_dir.sh \
-src_host marian.local.tetalab.org \
-dst_host jimmy.local.tetalab.org \
-src_dir /etc/httpd
-dst_dir /home/doug/httpd \
-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à: Dans l'exemple ci dessus le répertoire /home/doug/httpd verra ses droits et permissions positionnées
à doug:wheel 644 avec toutes les conséquences fâcheuses que ça peut avoir !
sys_auto_respawn_service.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_auto_respawn_service.sh
Auteur : Doug Le Tough
Date : 04-11-2018
Version : 1.0.0
Objet : Vérifie l'état des services énumérés dans le fichier de configuration
et les démarrent si ces services ne sont pas actifs
Le format du fichier de configuration est: SERVICES[<index>]="<vm>:<service>:<init script>"
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 04/11/2018 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_auto_respawn_service.sh
ex:
sys_auto_respawn_service.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
Fonctionnement:
---------------
Pour chacun des services définir dans le fichier de configuration:
- Se connecte en SSH sur la VM concernée et récupère l'état du service
- Si le service n'est pas détecté, redémarre le service en utilisant le script d'init défini pour ce service
Le format du fichier de configuration est: SERVICES[<index>]="<vm>:<service>:<init script>"
sys_backup_all_vm.sh
------------------------------------------------------------------------------
Script : sys_backup_all_vm.sh
Auteur : Doug Le Tough
Date : 24-12-2017
Version : 3.0.2
Objet : Sauvegarde les répertoires des VM définis dans le fichier de configuration
du script.
------------------------------------------------------------------------------
Mise a jour :
1.0.0 04/08/2017 - Doug Le Tough - Cre : Mise en production
1.0.1 12/11/2017 - Doug Le Tough - Evo : Prise en charge du dump InfluxDB
1.1.0 24/12/2017 - Doug Le Tough - Evo : Les dumps des bases Postgres sont indépendants les uns des autres
1.1.1 01/01/2018 - Doug Le Tough - Evo : Le dump de la base InfluxDB ne sauvegarde que les données des deux
derniers mois (moins d'espace disque requis)
2.0.0 27/01/2018 - Doug Le Tough - Evo : Support pour plusieurs hôtes destinataires des backups (BACKUP_HOSTS)
3.0.0 17/03/2019 - Doug Le Tough - Evo : Utilisation de borgbackup
3.0.1 22/05/2019 - Doug Le Tough - Evo : postgres user needs password + BORG_BASE_PATH
3.0.2 22/05/2019 - Doug Le Tough - Evo : BORG_EXCLUDE_PATH
------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_backup_all_vm.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
Fonctionnement:
---------------
Se connecte sur chacune des VM définies dans TETALAB_VM et lance, en tant que root, borg sur les chemins à
sauvegarder définis dans le fichier de configuration.
Le script détermine de lui même si la sauvegarde doit être incrementielle ou complète en fonction du jour de
la semaine et du jour du mois.
- Si le jour de la semaine n'est pas un dimanche, alors la sauvegarde sera incrémentielle
- Si le jour de la semaine est dimanche, la sauvegarde sera incrémentielle *et* complète.
- Si le jour est le 1er du mois, le script archive la dernière sauvegarde complète.
- Le script conserve les archives le nombre de jours défini par BACKUP_ARCHIVE_RETENTION.
Dump les bases de données postgres dans PG_TMP_DUMP_DIR et influxDB dans INFLUX_TMP_DUMP_DIR
avant de déplacer les dumps dans /home/asr de respectivement INFLUX_HOST et PG_HOST.
Chaque entrée dans TETALAB_VM doit être de la forme:
TETALAB_VM[INDEX]="NOM_VM:/PATH/TO/DOCS /OTHER/PATH/TO/DOCS /YET/ANOTHER/PATH/TO/DOCS"
Les chemins spécifiés *doivent* être des chemins absolus et peuvent être indifféremment des répertoires ou des
fichiers.
Les définitions des VM doivent être encadrées de double-quotes, les chemins doivent être séparés
par une espace et le nom de la VM séparé des chemins par le symbole "deux-points" (:).
sys_block_bot.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_block_bot.sh
Auteur : Doug Le Tough
Date : 25-10-2018
Version : 1.0.1
Objet : Récupère les adresses IP du bot dont le nom est passé à l'option -bot et
génère les règles iptables adéquates pour le bloquer
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 22/10/2018 - Doug Le Tough - Cre : Mise en production
1.0.1 25/10/2018 - Doug Le Tough - Evo : Affinage critère de sélection
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_block_bot.sh -bot <bot>
ex:
sys_block_bot.sh -bot ahrefs
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur Bobby.
Fonctionnement:
---------------
Parcours l'ensemble des logs d'accès http (*_access.log) contenus dans HTTPD_LOG_DIR et récupère les adresses IP
correspondantes au motif passé par l'option -bot.
sys_block_spam.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_block_spam.sh
Auteur : Doug Le Tough
Date : 19-05-2019
Version : 1.0.0
Objet : Récupère les adresses IP des spammers dont la sender address est passée en arguments
à l'option -sender et génère les règles iptables correspondantes
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 19/05/2019 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_block_spam.sh -sender <sender>
ex:
sys_block_spam.sh -sender @qq.com
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur Billy.
Fonctionnement:
---------------
Parcours le log ${MAIL_LOG} et récupère les adresses IP des spammers
correspondantes au motif passé par l'option -sender.
sys_check_logs.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_check_logs.sh
Auteur : Doug Le Tough
Date : 23-09-2017
Version : 1.0.0
Objet : Vérifie la présence d'erreur dans les logs des scripts et les
notifie sur IRC le cas échéant
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 23/09/2017 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_check_logs.sh
ex:
sys_check_logs.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
Fonctionnement:
---------------
Se connecte en SSH sur les VM listées dans le fichier de configuration et vérifie la présence de trace
d'erreur dans chacun des logs situés dans NC_EXPL_LOG et dont la date de modification est inférieure 4
à MAX_MTIME.
Si des erreurs sont constatées, elles sont notifiées sur IRC par IRCBOT sur freenode.net#tetalab
sys_create_vhost.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_create_vhost.sh
Auteur : Doug Le Tough
Date : 26-07-2017
Version : 1.1.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
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_create_vhost.sh -domain <FQDN.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.
sys_deploy_socle.sh
-----------------------------------------------------------------------------------------------------------------
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
-----------------------------------------------------------------------------------------------------------------
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.
sys_mass_exec.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_mass_exec.sh
Auteur : Doug Le Tough
Date : 14-08-2017
Version : 1.0.0
Objet : Execute la commande passée en argument sur toutes les VM définies
dans le fichier de configuration.
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 14/08/2017 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_mass_exec.sh -cmd <commande> [<arg1> <arg2> ...]
ex:
sys_mass_exec.sh -cmd free \\-m
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
Fonctionnement:
---------------
Se connecte en SSH sur les VM listées dans le fichier de configuration et exécute la commande
passée en argument de l'option -cmd.
Les éventuels paramètres nécessaires à la commande à executer sur les VM sont à mettre à la suite de la
commande tels qu'ils le seraient si la commande devait être executée dans un shell.
Si la commande à passer nécessite une option précédée d'un - (ex: free -m), les - doivent être *doublement* protégés.
sys_nextcloud_sync_users.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_nextcloud_sync_users.sh
Auteur : Doug Le Tough
Date : 06-03-2018
Version : 1.0.2
Objet : Synchronise les tables des utilisateurs de Garradin (https://asso.tetalab.org)
et de Nextcloud (https://cloud.tetalab.org)
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 02/02/2018 - Doug Le Tough - Cre : Mise en production
1.0.1 ?????????? - Doug Le Tough - Evo : ??????????????????
1.0.2 06/03/2018 - Doug Le Tough - Evo : Vérification de la présence de
la base de données source
avant traitement
1.0.3 27/02/2022 - Doug Le Tough - Evo : Prise en compte de la colonne
uid_lower
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_nextcloud_sync_users.sh
ex:
sys_nextcloud_sync_users.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr
Fonctionnement:
---------------
Compare le contenu de la table des utilisateurs de Nextcloud et de Garradin
et supprime les comptes inutiles puis compare le contenu de la tables des
utilisaturs de Garradin avec Nextcloud et met à jour les utilisateurs en ajoutant
les utilisateurs au besoin.
Les comptes à ne pas modifier sur la destination sont définis dans PRESERVED_ACCOUNTS
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
sys_purge_logs.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_purge_logs.sh
Auteur : Doug Le Tough
Date : 23-09-2017
Version : 1.0.0
Objet : Purge les logs sur les VM définies dans le fichier de configuration
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 23/09/2017 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_purge_logs.sh
ex:
sys_purge_logs.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
Fonctionnement:
---------------
Se connecte en SSH sur les VM listées dans le fichier de configuration et purge les logs
situés dans NC_EXPL_LOG et dont la date de modification supérieure à MAX_MTIME.
sys_refresh_ref_cron.sh
-----------------------------------------------------------------------------------------------------------------
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 24/07/2017 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_refresh_ref_cron.sh [-force true] [-show_only true]
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
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 "tetalab_ref".
À 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
sys_refresh_ref_domains.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_refresh_ref_domains.sh
Auteur : Doug Le Tough
Date : 12-11-2017
Version : 1.0.1
Objet : Met à jour le référentiel des sous-domaines de la zone .tetalab.org
accessible par https://ref.tetalab.org
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 29/07/2017 - Doug Le Tough - Cre : Mise en production
1.0.1 12/11/2017 - Doug Le Tough - Evo : Ajout du parametre de configuration SRV_DNS
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_refresh_ref_domains.sh [-force true] [-show_only true]
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
Fonctionnement:
---------------
Récupère l'ensemble des sous-domaines et CNAME de la zone ZONE listés dans ZONE_FILE
et les enregistre dans la table DB_TABLE de la base de données "tetalab_ref".
À 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 sous-domaine n'existe plus.
Lorsqu'un sous-domaine est supprimé, forcer une régénération complète des entrées de la base est
donc nécessaire (sys_refresh_ref_domains.sh -force true)
L'option -show_only positionnée à true permet de lister les sous-domaines 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
sys_refresh_ref_git.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_refresh_ref_git.sh
Auteur : Doug Le Tough
Date : 29-06-2019
Version : 2.0.0
Objet : Met à jour le référentiel des dépôts Git accessible par https://ref.tetalab.org
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 31/07/2017 - Doug Le Tough - Cre : Mise en production
1.0.1 14/08/2017 - Doug Le Tough - Evo : Les retours à la ligne dans la description ne sont plus remplacés
par des espaces
2.0.0 29/06/2019 - Doug Le Tough - Evo : Utilise l'API Gitea
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_refresh_ref_git.sh [-force true] [-show_only true]
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
Fonctionnement:
---------------
Récupère l'ensemble des dépôts git à partir de l'API Gitea sur GITEA_API_BASE_URL.
À 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 sous-domaine n'existe plus.
Lorsqu'un dépôt Git est supprimé, forcer une régénération complète des entrées de la base est
donc nécessaire (sys_refresh_ref_git.sh -force true)
L'option -show_only positionnée à true permet de lister les dépôts 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/10.2/static/libpq-pgpass.html
sys_refresh_ref_pkg.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_refresh_ref_pkg.sh
Auteur : Doug Le Tough
Date : 26-07-2017
Version : 1.0.0
Objet : Met à jour le référentiel des paquets installés de l'ensemble de l'infra
accessible par https://ref.tetalab.org
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 26/07/2017 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_refresh_ref_pkg.sh [-force true] [-show_only true]
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
Fonctionnement:
---------------
Récupère la liste des paquets installés sur les VM définies dans TETALAB_VM et les enregistre dans la table
DB_TABLE de la base de données "tetalab_ref".
À 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 paquet n'est plus installé sur le
système concernée.
Lorsqu'un paquet est supprimé, forcer une régénération complète des entrées de la base est
donc nécessaire (sys_refresh_ref_pkg.sh -force true)
L'option -show_only positionnée à true permet de lister les paquets 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
sys_refresh_ref_script.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_refresh_ref_script.sh
Auteur : Doug Le Tough
Date : 24-12-2017
Version : 1.0.1
Objet : Met à jour le référentiel des dépôts Git accessible par https://ref.tetalab.org
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 06/08/2017 - Doug Le Tough - Cre : Mise en production
1.0.1 24/12/2017 - Doug Le Tough - Evo : Meilleure lisibilité du log
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_refresh_ref_script.sh [-force true] [-show_only true]
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
Fonctionnement:
---------------
Récupère la documentation de l'ensemble des scripts situés dans NC_EXPL_BIN.
À 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 sous-domaine n'existe plus.
Lorsqu'un script est supprimé, forcer une régénération complète des entrées de la base est
donc nécessaire (sys_refresh_ref_git.sh -force true)
L'option -show_only positionnée à true permet de lister les dépôts 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
sys_refresh_ref_sites.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_refresh_ref_sites.sh
Auteur : Doug Le Tough
Date : 12-11-2017
Version : 1.0.2
Objet : Met à jour le référentiel des sites Internet hébergés par le Tetalab
accessible par https://ref.tetalab.org
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 29/07/2017 - Doug Le Tough - Cre : Mise en production
1.0.1 07/10/2017 - Doug Le Tough - Evo : Prend en charge RPROXY_HOST
1.0.2 12/11/2017 - Doug Le Tough - Bug : Correction RegExp find
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_refresh_ref_sites.sh [-force true] [-show_only true]
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
Fonctionnement:
---------------
Récupère la liste des sites, actifs ou non, hébergés par le Tetalab et les enregistre dans
la table DB_TABLE de la base de données "tetalab_ref".
Certains sites pouvant avoir une configuration particulière (ie. slackware.tetalab.org.conf), il est
possible de les exclure de la recherche en les ajoutant au tableau EXCLUDE défini dans le fichier
de configuration.
À 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 site n'existe plus.
Lorsqu'un site est supprimé, forcer une régénération complète des entrées de la base est
donc nécessaire (sys_refresh_ref_sites.sh -force true)
L'option -show_only positionnée à true permet de lister les sites 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
sys_refresh_socle_bash.sh
-----------------------------------------------------------------------------------------------------------------
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 23/07/2017 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
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.
sys_refresh_ssl_certs.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_refresh_ssl_certs.sh
Auteur : Doug Le Tough
Date : 21-07-2018
Version : 1.0.0
Objet : Script de renouvellement des certificats SSL des sites Internet
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 16/12/2017 - Doug Le Tough - Cre : Mise en production
1.0.1 21/07/2018 - Doug Le Tough - Bug : renew_certs et restart_httpd: Les erreurs n'étaient pas remontées
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_refresh_ssl_certif.sh [ -force true ]
ex:
sys_refresh_ssl_certif.sh -force true
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr
Fonctionnement:
---------------
Renouvelle les certificats SSL à l'aide de dehydrated et redémarre le service HTTP surle
reverse proxy défini dans le fichier de configuration par RPROXY_HOST.
L'option -force permet de forcer le renouvellement des certificats y compris lorsque ceux-ci
sont encore valide. L'option -force est positionnée à false par défaut.
sys_refresh_tetalab_ref.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_refresh_tetalab_ref.sh
Auteur : Doug Le Tough
Date : 14-08-2017
Version : 1.0.0
Objet : Permet la mise à jour du site du référentiel de l'infrastructure
accessible via https://ref.tetalab.org
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 14/08/2017 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_refresh_tetalab_ref.sh
ex:
sys_refresh_tetalab_ref.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr sur sousetsuken
Fonctionnement:
---------------
Clone le dépôt du site du référentiel à partir de REF_GIT_URL et le copie dans REF_SITE_DIR sur
REF_BACKEND_VM puis redémarre le service HTTPD de REF_BACKEND_VM.
sys_refresh_tetalab_scripts.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_refresh_tetalab_scripts.sh
Auteur : Doug Le Tough
Date : 26-07-2017
Version : 1.0.0
Objet : Permet la mise à jour de l'installation des scripts de gestion de l'infrastructure
sur les VM du Tetalab
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 26/07/2017 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_refresh_tetalab_scripts.sh
ex:
sys_refresh_tetalab_scripts.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 des scripts de gestion de l'infrastructure, clone le
dépôt Git dont l'URL est définie dans le fichier de configuration (SCRIPTS_GIT_URL) et installe les scripts.
Puis, copie, sur l'ensemble des VM listées dans le fichier de configuration (TETALAB_VM[*]),
le dépot Git local des scripts et les installent.
sys_tetastock_sync_users.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_tetastock_sync_users.sh
Auteur : Doug Le Tough
Date : 27-10-2017
Version : 1.0.0
Objet : Synchronise les tables des utilisateurs de Garradin (https://asso.tetalab.org)
et de Tetastock (https://stock.tetalab.org)
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 27/10/2017 - Doug Le Tough - Cre : Mise en production
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_tetastock_sync_users.sh
ex:
sys_tetastock_sync_users.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr
Fonctionnement:
---------------
Compare le contenu de la table des utilisateurs de Tetastock et de Garradin
et supprime les comptes inutiles puis compare le contenu de la tables des
utilisaturs de Garradin et met à jour les utilisateurs en ajoutant les utilisateurs
au besoin.
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
sys_wemakethsf_sync_users.sh
-----------------------------------------------------------------------------------------------------------------
Script : sys_wemakethsf_sync_users.sh
Auteur : Doug Le Tough
Date : 06-03-2018
Version : 1.1.0
Objet : Synchronise la liste des membres de la liste de diffusion thsf_staff (mailman: thsf_staff@tetalab.org)
avec la liste des utilisateurs enregistrés sur wemake.thsf.net (https://wemake.thsf.net)
-----------------------------------------------------------------------------------------------------------------
Mise a jour :
1.0.0 06/03/2017 - Doug Le Tough - Cre : Mise en production
1.1.0 15/04/2018 - Doug Le Tough - Evo : Ajout d'une liste d'exclusion
-----------------------------------------------------------------------------------------------------------------
Syntaxe :
--------
prompt> sys_wemakethsf_sync_users.sh
ex:
sys_wemakethsf_sync_users.sh
Prérequis:
----------
- Le script doit être executé par l'utilisateur asr
Fonctionnement:
---------------
Compare le contenu de la table des utilisateurs de wemake.thsf.net et la liste des membres
enregistrés sur la liste de diffusion <THSF_LIST> et faits les ajouts/suppression de comptes
nécessaires.
Si l'adresse mail de l'utilisateur fait partie de EXCLUDE_USERS, alors son compte n'est pas synchronisé.
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