Files
init.sh/lib/support.sh
2022-12-17 20:19:03 +01:00

107 lines
3.9 KiB
Bash

# ------------------------------------------------------------------------------
# Base support function
# This file is part of the init.sh project
# Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at:
# https://opensource.org/licenses/BSD-3-Clause
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# Display help
disp_help()
{
cat << EOF
Usage: init.sh [OPTIONS] [-m|--module <module1,...,moduleN>]
Initialise une machine pour l'intégrer à un réseau.
Options :
-f, --file <fichier> Permet de spécifier un fichier de configuration
à charger manuellement. Cette option peut être répétée
pour permettre le chargement de plusieurs fichiers de
configuration, le dernier surchargeant les précédants.
-m, --module <liste> Lance les modules indiqués même s'il ne sont pas
dans les fichiers de configuration. Les noms des
modules doivent être séparés par des virgules.
-c, --check-only Lance les procédures de vérification sans rien
modifier.
-j, --jump Saute les procédures de vérification des
modules.
-k, --keep-going Continue l'execution en cas d'erreur.
-r, --resume Reprend l'execution là ou elle s'est arrêté.
-R, --no-root-check Ne pas vérifier les droits root (ou UID 0)
-o, --offline Assume that all needed resource are available on a LAN
and avoid any Internet connectivity checks.
-P, --no-proxy Ne pas utiliser de proxy lors de l'utilisation de
ce script (n'empêche pas leur configuration via modules)
-D, --no-deps Ne pas vérifier les dépendances entre les modules.
-h, --help Affiche ce texte d'aide.
-s, --shell Lance un shell avec tout l'environnement du script pour
débogage. Aucune action ou vérification n'est faite en
dehors des commandes lancées dans le shell.
--chroot <chemin> Permet à init de ne pas appliquer les modifications au
système de fichier racine mais à un système différent.
-l, --logfile <nom> Nom du fichier de log. Peut aussi être changé
via la variable d'environnement LOGFILE.
-v, --version Affiche la version de ce script et celles de
tous les modules disponibles.
Attention : les options courtes ne sont pas concaténable.
Variable d'environnement :
LOGFILE Stocke le nom complet du fichier de log qui sera
produit.
Fichiers de configuration :
Le fichier de configuration principal fournira les détails nécessaires
au déploiement de la nouvelle machine. Il doit se situer dans le
répertoire conf/ à coté du script init.sh. Si un fichier appelé
"hostname.sh" existe (ou hostname est le nom d'hote), alors il sera le
fichier de configuration principal. Dans le cas contraire, le nom
générique "init.conf.sh" sera recherché.
En l'absence de fichier de configuration ce script ne pourra pas
fonctionner.
Veuiller consulter les fichiers de configuration fournis en exemple
pour avoir un aperçu des paramêtres disponibles.
EOF
}
export -f disp_help
# ------------------------------------------------------------------------------
# Show version infos
show_version()
{
echo -e "${BWhite}init.sh${DEFAULTCOL} version ${BGreen}$VERSION${DEFAULTCOL}"
echo && separator && echo
echo "Available modules:"
local mod=
for mod in $MYPATH/modules/*.sh; do
# Ran in a subshell to not pollute environment
(
. $mod
local modname=$(get_mod_name $mod)
local version=VER_$modname
echo -e "\t$BWhite$modname${DEFAULTCOL}: $BGreen${!version}$DEFAULTCOL"
unset modname version
)
done
unset mod
if [[ $(id -u) -ne 0 ]]; then
echo -e "\n${BYellow}Warning:$DEFAULTCOL That script requires superuser rights to work."
fi
}
export -f show_version
# EOF