diff --git a/conf/includes/debian.conf.sh b/conf/includes/debian.conf.sh new file mode 100644 index 0000000..a113c9f --- /dev/null +++ b/conf/includes/debian.conf.sh @@ -0,0 +1,20 @@ +# Configuration propre à Debian + +# Conf gestionnaire de paquet +export PKG_MAN="apt-get" +export COM_INSTALL="install -y" +export COM_UPDATE="update" +export COM_UPGRADE="full-upgrade -y" +export COM_REMOVE="remove --purge -y" +export COM_AUTOREM="autoremove --purge -y" + +# Conf chemin +export RC_SCRIPTS_PATH="/etc/init.d" + +# Conf init +# Init SystemV ou OpenRC: +#export INIT_COM="/etc/init.d/%srv% %comm%" +# Init Systemd: +#export INIT_COM="systemctl %comm% %srv%" +# Init Upstart (plus ou moins universel) +export INIT_COM="service %srv% %comm%" diff --git a/conf/legos.conf.sh b/conf/includes/legos.conf.sh similarity index 86% rename from conf/legos.conf.sh rename to conf/includes/legos.conf.sh index 040848d..108e3e8 100644 --- a/conf/legos.conf.sh +++ b/conf/includes/legos.conf.sh @@ -2,11 +2,13 @@ export MAINDOM="legos.obs-mip.fr" # Proxy LEGOS +export PROXYAPT="acng.legos.obs-mip.fr" +export PROXYAPTPORT="3142" export PROXYSRV="proxy.legos.obs-mip.fr" -export PROXYPORT="3128" +export PROXYSRVPORT="3128" # Paquets à enlever après installation -export RMLIST="apparmor chafa laptop-detect resolvconf" +export RMLIST="apparmor laptop-detect resolvconf" export APTBLACKLIST="apparmor chafa resolvconf" # Langues supportés diff --git a/conf/init.conf.sh b/conf/init.conf.sh index 77fe337..f837733 100644 --- a/conf/init.conf.sh +++ b/conf/init.conf.sh @@ -1,7 +1,14 @@ -. conf/includes/legos.conf.sh +# Fichier de configuration principal -# Utilisateur de la machine -export MAINUSER="levasseu" +# Importe les paramètres spécifiques LEGOS +. $MYPATH/conf/includes/legos.conf.sh + +# Importe les paramètres pour Debian +. $MYPATH/conf/includes/debian.conf.sh + +# -------------- Section générale --------------- +# Utilisateur de la machine (celui qui sera renseigné dans l'installeur Ubuntu) +export MAINUSER="levasseur" # Interface réseau principale export MAINIF="eth0" @@ -9,7 +16,16 @@ export MAINIF="eth0" # Booléen indiquant une ou plusieurs futures VM export WITH_VM="true" +# Indique la déclinaison d'Ubuntu à installer +# * xubuntu : bureau XFCE léger (par défaut) +# * ubuntu : bureau Gnome lourd, très peu configurable +# * kubuntu : bureau KDE lourd, très configurable +# * ubuntu-mate : bureau Mate intermédiaire légèrement configurable +# * lubuntu : bureau LXQT très léger +export UBUNTU_FLAVOR=xubuntu + # ------------------------------------------------------------------------------ +# -------------- Section disque de calcul --------------- # Niveau ZFS : mirror (RAID1), raidz1 (RAID5), raidz2 (RAID6) # Laisser vide pour RAID0 export CALCLEVEL="" @@ -22,5 +38,6 @@ export CALCDRV="/dev/disk/by-id/xxxxx" export FORCEBLANK="no" # ------------------------------------------------------------------------------ - -export MODULE_LIST="upgrade_dist conf_disks conf_locale conf_ntp" +# -------------- Section modules d'init --------------- +export MODULE_LIST="upgrade_dist conf_disks conf_locale conf_ntp conf_ssh \ + install_desktop install_pkg" diff --git a/init.sh b/init.sh index 28ba0ef..87faf0f 100755 --- a/init.sh +++ b/init.sh @@ -1,4 +1,6 @@ #!/bin/bash +# Init : initialise une machine et la met en conformité +# Copyright (c) 2021 Geoffray Levasseur # Remember the running path MYPATH=$(dirname $0) @@ -10,7 +12,15 @@ done # Important global variables export HOSTNAME=$(hostname) -export LOGFILE=${LOGFILE:-"/var/log/$(uname -n)-$(stdtime).log"} +export LOGFILE=${LOGFILE:-"/root/init-$(uname -n)-$(stdtime).log"} + +# Log toute les sortie dans le fichier de log +exec 3>&1 4>&2 +trap 'exec 2>&4 1>&3' 0 1 2 3 +exec 1>$LOGFILE 2>&1 + +# Récupère la configuration +. $MYPATH/conf/init.conf.sh # Authentication #authnz() diff --git a/lib/display.sh b/lib/display.sh index 33d1a36..eff63a2 100644 --- a/lib/display.sh +++ b/lib/display.sh @@ -1,6 +1,6 @@ # Some display functions and defines color codes -# (standard 16 colors display) +# Standard 16 colors display declaration DEFAULTFG="\e[0;39m" DEFAULTBG="\e[0;49m" DEFAULTCOL=${DEFAULTBG}${DEFAULTFG} diff --git a/lib/pkgman.sh b/lib/pkgman.sh new file mode 100644 index 0000000..f2bad46 --- /dev/null +++ b/lib/pkgman.sh @@ -0,0 +1,43 @@ +# Fonctions de gestion de paquets + +# Mise à jour de la base de donnée +pkgupdt() +{ + prnt I "Mise à jour de la liste des paquets..." + $PKG_MAN $COM_UPDATE $@ +} +export -f pkgupdt + +# Installation +pkginst() +{ + prnt I "Installation de paquets..." + [[ $# -lt 1 ]] && prnt E "pkginst(): des paramètres sont requis." && exit 11 + $PKG_MAN $COM_INSTALL $@ +} +export -f pkginst + +# Mise à jour +pkgupgd() +{ + prnt I "Application de la mise à jours du système..." + $PKG_MAN $COM_UPGRADE $@ +} +export -f pkgupgd + +# Désinstallation +pkgrem() +{ + prnt I "Désinstallation de paquets..." + [[ $# -lt 1 ]] && prnt E "pkgrem(): des paramètres sont requis." && exit 11 + $PKG_MAN $COM_REMOVE $@ +} +export -f pkgrem + +# Désinstallation du superflu +pkgautorem() +{ + prnt I "Désinstallation de paquets superflus..." + $PKG_MAN $COM_AUTOREM $@ +} +export -f pkgautorem diff --git a/modules/conf_disks.sh b/modules/conf_disks.sh index f183df6..d7e4b4c 100644 --- a/modules/conf_disks.sh +++ b/modules/conf_disks.sh @@ -11,7 +11,7 @@ conf_zfs() mkdir -pv /calcul/$HOSTNAME # Installation de ZFS - apt -y install zfsutils-linux + pkginst zfsutils-linux # Chargement du module et vérification modprobe zfs || ( @@ -64,7 +64,7 @@ conf_ext4() conf_xfs() { prnt I "Installation des outils XFS..." - apt install -y xfsprogs + pkginst xfsprogs mkpart # A finir } @@ -81,7 +81,7 @@ conf_disk() fi prnt I "Installation des outils de partitionnement..." - apt install -y parted + pkginst parted conf_$CALCTYPE && ( prnt I "Attribution des droits sur le disque de calcul." diff --git a/modules/upgrade_dist.sh b/modules/upgrade_dist.sh index d8567cb..8e92320 100644 --- a/modules/upgrade_dist.sh +++ b/modules/upgrade_dist.sh @@ -1,14 +1,12 @@ #!/bin/bash # Module mise à jour de la distribution - - upgrade_dist() { local proxyfile=/etc/apt/apt.conf.d/00proxy prnt I "Configuration du proxy pour APT..." - if [[ $PROXYSRV ]]; then + if [[ $PROXYAPT ]]; then if [[ ! -d $(basedir $proxyfile) ]]; then mkdir -pv /etc/apt/apt.conf.d || ( prnt E "Impossiblle de créer le répertoire d'accueil pour la configuration d'APT." @@ -16,20 +14,20 @@ upgrade_dist() ) fi backupdist $proxyfile - echo "# Generated automatically on $(date $DATEFORMAT) by $0" > $proxyfile - echo "Acquire::http::Proxy \"http://${PROXYSRV}:${PROXYPORT}\";" >> $proxyfile + echo "# Generated automatically on $(stdtime) by $0" > $proxyfile + echo "Acquire::http::Proxy \"http://${PROXYAPT}:${PROXYAPTPORT}\";" >> $proxyfile else prnt I "Pas de proxy configuré, ne fait rien." fi prnt I "Mise à jour de la liste des paquets..." - apt-get update + pkgupdt prnt I "Application des mises à jour de paquets..." - apt-get upgrade -y + pkgupdg prnt I "Suppression de paquets indésirables..." - apt-get remove --purge -y $RMLIST + pkgrem $RMLIST prnt I "Suppression des paquets résiduels..." - apt autoremove --purge -y + pkgautorem } precheck_upgrade_dist() @@ -40,8 +38,8 @@ precheck_upgrade_dist() prnt E "Réseau non fonctionnel ! Abandon." exit 1 fi - if [[ $PROXYSRV ]]; then - [[ ! $PROXYPORT ]] && ( + if [[ $PROXYAPT ]]; then + [[ ! $PROXYAPTPORT ]] && ( prnt E "Un serveur proxy a été spécifié mais pas son port d'usage." exit 1 )