beginning "create_vm" module, splitted main program
This commit is contained in:
19
conf/includes/legos_vm_win7.conf.sh
Normal file
19
conf/includes/legos_vm_win7.conf.sh
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# legos_vm_win7.conf.sh: Configuration d'une VM standard Windows 7
|
||||||
|
|
||||||
|
# Chemin racine de vbox
|
||||||
|
export VM_ROOT=/local/vmguests
|
||||||
|
|
||||||
|
# Nombre de vCPU
|
||||||
|
export VM_CPU=2
|
||||||
|
|
||||||
|
# Taille de la RAM en Mo
|
||||||
|
export VM_MEM=4096
|
||||||
|
|
||||||
|
# Taille di disque en Go
|
||||||
|
export VM_DISK_SIZE=42
|
||||||
|
|
||||||
|
# Nom de l'interface de l'hôte à bridger
|
||||||
|
export VM_IF_BRIDGE=eth1
|
||||||
|
|
||||||
|
# Liste des répertoire de l'hote à partager avec la VM (séparé par des virgules)
|
||||||
|
export VM_SHARES="/home,/media,/calcul/$HOSTNAME"
|
||||||
@@ -25,9 +25,6 @@ export MAINUSER="levasseur"
|
|||||||
# Interface réseau principale
|
# Interface réseau principale
|
||||||
export MAINIF="eth0"
|
export MAINIF="eth0"
|
||||||
|
|
||||||
# Booléen indiquant une ou plusieurs futures VM
|
|
||||||
export WITH_VM="true"
|
|
||||||
|
|
||||||
# Pilotes X11 non libre à installer ?
|
# Pilotes X11 non libre à installer ?
|
||||||
export X11_DRV="nvidia-drivers"
|
export X11_DRV="nvidia-drivers"
|
||||||
|
|
||||||
@@ -39,6 +36,19 @@ export X11_DRV="nvidia-drivers"
|
|||||||
# * lubuntu : bureau LXQT très léger
|
# * lubuntu : bureau LXQT très léger
|
||||||
export UBUNTU_FLAVOR=xubuntu
|
export UBUNTU_FLAVOR=xubuntu
|
||||||
|
|
||||||
|
# Booléen indiquant une ou plusieurs futures VM
|
||||||
|
# Les lignes suivantes devraient être commentés si à false
|
||||||
|
export WITH_VM="true"
|
||||||
|
. $MYPATH/conf/includes/legos_vm_win7.conf.sh
|
||||||
|
|
||||||
|
# Nom de la VM
|
||||||
|
VM_NAME=vm-levasseur
|
||||||
|
|
||||||
|
# Logiciels optionnels non packagé Debian
|
||||||
|
# export WITH_MATLAB="true"
|
||||||
|
# export WITH_IDL="true"
|
||||||
|
# export WITH_="true"
|
||||||
|
|
||||||
# Mode d'installation :
|
# Mode d'installation :
|
||||||
# * dev : installe les paquets un par un avec apt (lent)
|
# * dev : installe les paquets un par un avec apt (lent)
|
||||||
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
|
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
|
||||||
@@ -65,4 +75,5 @@ export FORCEBLANK=false
|
|||||||
|
|
||||||
# Liste des modules à executer (surchargeable en ligne de commande)
|
# Liste des modules à executer (surchargeable en ligne de commande)
|
||||||
export MODULE_LIST="upgrade_dist conf_disks conf_locale conf_ntp conf_ssh \
|
export MODULE_LIST="upgrade_dist conf_disks conf_locale conf_ntp conf_ssh \
|
||||||
conf_mail install_desktop install_pkg install_chromium"
|
conf_mail install_desktop install_pkg install_chromium \
|
||||||
|
install_profile"
|
||||||
|
|||||||
118
init.sh
118
init.sh
@@ -59,66 +59,13 @@ export KEEPGOING=false
|
|||||||
export RESUME=false
|
export RESUME=false
|
||||||
export STAGE_FILE="$MYPATH/stage"
|
export STAGE_FILE="$MYPATH/stage"
|
||||||
|
|
||||||
# Processing command line options
|
read_commandline
|
||||||
want_module=false
|
|
||||||
for opt in $@; do
|
|
||||||
if [[ $want_module == false ]]; then
|
|
||||||
case $opt in
|
|
||||||
"-h"|"--help")
|
|
||||||
disp_help
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
"-v"|"--version")
|
|
||||||
show_version
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
"-m"|"--module")
|
|
||||||
want_module=true
|
|
||||||
;;
|
|
||||||
"-c"|"--check-only")
|
|
||||||
export CHECK_ONLY=true
|
|
||||||
;;
|
|
||||||
"-j"|"--jump")
|
|
||||||
export JUMP=true
|
|
||||||
;;
|
|
||||||
"-k"|"--keep-going")
|
|
||||||
export KEEPGOING=true
|
|
||||||
;;
|
|
||||||
"-r"|"--resume")
|
|
||||||
if [[ -s $STAGE_FILE ]]; then
|
|
||||||
export RESUME=true
|
|
||||||
else
|
|
||||||
prnt E "Le fichier d'état n'existe pas ou est vide !"
|
|
||||||
prnt E "Sans ce fichier, la reprise n'est pas possible."
|
|
||||||
die 1 --force
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
prnt E "Paramètre \'$opt\' non géré."
|
|
||||||
disp_help
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
if [[ ! $MANUAL_MODULE_LIST ]]; then
|
|
||||||
MANUAL_MODULE_LIST=$opt
|
|
||||||
want_module=false
|
|
||||||
else
|
|
||||||
prnt E "Une liste de module à déjà été fournie !"
|
|
||||||
prnt E "La ligne de commande ne tolère qu'un paramètre --module."
|
|
||||||
die 1 --force
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# After this we need to be root
|
# After this we need to be root
|
||||||
# (--help and --version are allowed as unprivileged user)
|
# (--help and --version are allowed as unprivileged user)
|
||||||
if [[ $EUID -ne 0 ]]; then
|
check_root
|
||||||
prnt E "Ce script doit être démarré en tant que root. Arrêt."
|
|
||||||
die 4 --force
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Logfile variable treatment
|
# Logfile variable treatment -- cannot be a function
|
||||||
export LOGFILE=${LOGFILE:-"$MYPATH/log/init-$(uname -n)-$(stdtime).log"}
|
export LOGFILE=${LOGFILE:-"$MYPATH/log/init-$(uname -n)-$(stdtime).log"}
|
||||||
|
|
||||||
prnt I "Création du répertoire d'accueil du fichier log..."
|
prnt I "Création du répertoire d'accueil du fichier log..."
|
||||||
@@ -131,64 +78,11 @@ exec > >(tee -a $LOGFILE)
|
|||||||
exec 2> >(tee -a $LOGFILE >&2)
|
exec 2> >(tee -a $LOGFILE >&2)
|
||||||
prnt I "Démarrage d'init version $VERSION."
|
prnt I "Démarrage d'init version $VERSION."
|
||||||
|
|
||||||
# Load configuration
|
# -- Cannot be a function ends here
|
||||||
prnt I "Chargement de la configuration..."
|
|
||||||
if [[ -e $MYPATH/conf/$HOSTNAME.conf ]]; then
|
|
||||||
prnt I "Une configuration spécifique sera utilisé."
|
|
||||||
. $MYPATH/conf/$HOSTNAME.conf
|
|
||||||
else
|
|
||||||
if [[ -e $MYPATH/conf/init.conf.sh ]]; then
|
|
||||||
prnt I "Une configuration générique sera utilisé."
|
|
||||||
. $MYPATH/conf/init.conf.sh
|
|
||||||
else
|
|
||||||
prnt E "Aucune configuration trouvée, impossible de continuer."
|
|
||||||
die 2 --force
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $want_module == true ]]; then
|
load_configuration
|
||||||
prnt E "La liste des modules à exécuter est manquante !"
|
|
||||||
die 1 --force
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check unconsistant parameters
|
process_commandline_and_vars
|
||||||
if [[ $CHECK_ONLY == true ]]; then
|
|
||||||
[[ $JUMP == true ]] && (
|
|
||||||
prnt E "Les options --check-only et --jump s'excluent mutuellement !"
|
|
||||||
die 1 --force
|
|
||||||
)
|
|
||||||
[[ $KEEPGOING == true ]] && (
|
|
||||||
prnt E "Les options --keep-going et --check-only sont incompatible !"
|
|
||||||
die 1 --force
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
if [[ $RESUME == true ]]; then
|
|
||||||
[[ $CHECK_ONLY == true ]] && (
|
|
||||||
prnt E "La reprise n'a pas de sens avec --check-only."
|
|
||||||
die 1 --force
|
|
||||||
)
|
|
||||||
[[ $MANUAL_MODULE_LIST ]] && (
|
|
||||||
prnt E "Le mode reprise ne fonctionne pas avec une liste de modules passé manuellement."
|
|
||||||
die 1 --force
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Configure module list
|
|
||||||
if [[ $MANUAL_MODULE_LIST ]]; then
|
|
||||||
prnt W "Une liste de modules manuelle sera utilisé."
|
|
||||||
export MODULE_LIST=$(echo $MANUAL_MODULE_LIST | sed "s/,/ /g")
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for module list existance en basic syntax
|
|
||||||
if [[ -n $MODULE_LIST ]]; then
|
|
||||||
if [[ $(echo $MODULE_LIST | grep '-') ]]; then
|
|
||||||
prnt E "Le tiret est interdit dans les noms de module."
|
|
||||||
die 5
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
prnt E "Aucun module à exécuter !"
|
|
||||||
die 5
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Run prechecks
|
# Run prechecks
|
||||||
[[ JUMP != true ]] && for mod in $MODULE_LIST; do
|
[[ JUMP != true ]] && for mod in $MODULE_LIST; do
|
||||||
|
|||||||
@@ -80,3 +80,11 @@ function backtrace
|
|||||||
(( i=i++ ))
|
(( i=i++ ))
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_root()
|
||||||
|
{
|
||||||
|
if [[ $EUID -ne 0 ]]; then
|
||||||
|
prnt E "Ce script doit être démarré en tant que root. Arrêt."
|
||||||
|
die 4 --force
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|||||||
119
lib/zzz_main_fct.sh
Normal file
119
lib/zzz_main_fct.sh
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
|
||||||
|
read_commandline()
|
||||||
|
{
|
||||||
|
# Processing command line options
|
||||||
|
want_module=false
|
||||||
|
for opt in $@; do
|
||||||
|
if [[ $want_module == false ]]; then
|
||||||
|
case $opt in
|
||||||
|
"-h"|"--help")
|
||||||
|
disp_help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
"-v"|"--version")
|
||||||
|
show_version
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
"-m"|"--module")
|
||||||
|
want_module=true
|
||||||
|
;;
|
||||||
|
"-c"|"--check-only")
|
||||||
|
export CHECK_ONLY=true
|
||||||
|
;;
|
||||||
|
"-j"|"--jump")
|
||||||
|
export JUMP=true
|
||||||
|
;;
|
||||||
|
"-k"|"--keep-going")
|
||||||
|
export KEEPGOING=true
|
||||||
|
;;
|
||||||
|
"-r"|"--resume")
|
||||||
|
if [[ -s $STAGE_FILE ]]; then
|
||||||
|
export RESUME=true
|
||||||
|
else
|
||||||
|
prnt E "Le fichier d'état n'existe pas ou est vide !"
|
||||||
|
prnt E "Sans ce fichier, la reprise n'est pas possible."
|
||||||
|
die 1 --force
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
prnt E "Paramètre \'$opt\' non géré."
|
||||||
|
disp_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
if [[ ! $MANUAL_MODULE_LIST ]]; then
|
||||||
|
MANUAL_MODULE_LIST=$opt
|
||||||
|
want_module=false
|
||||||
|
else
|
||||||
|
prnt E "Une liste de module à déjà été fournie !"
|
||||||
|
prnt E "La ligne de commande ne tolère qu'un paramètre --module."
|
||||||
|
die 1 --force
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
load_configuration()
|
||||||
|
{
|
||||||
|
prnt I "Chargement de la configuration..."
|
||||||
|
if [[ -e $MYPATH/conf/$HOSTNAME.conf ]]; then
|
||||||
|
prnt I "Une configuration spécifique sera utilisé."
|
||||||
|
. $MYPATH/conf/$HOSTNAME.conf
|
||||||
|
else
|
||||||
|
if [[ -e $MYPATH/conf/init.conf.sh ]]; then
|
||||||
|
prnt I "Une configuration générique sera utilisé."
|
||||||
|
. $MYPATH/conf/init.conf.sh
|
||||||
|
else
|
||||||
|
prnt E "Aucune configuration trouvée, impossible de continuer."
|
||||||
|
die 2 --force
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
process_commandline_and_vars()
|
||||||
|
{
|
||||||
|
if [[ $want_module == true ]]; then
|
||||||
|
prnt E "La liste des modules à exécuter est manquante !"
|
||||||
|
die 1 --force
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check unconsistant parameters
|
||||||
|
if [[ $CHECK_ONLY == true ]]; then
|
||||||
|
[[ $JUMP == true ]] && (
|
||||||
|
prnt E "Les options --check-only et --jump s'excluent mutuellement !"
|
||||||
|
die 1 --force
|
||||||
|
)
|
||||||
|
[[ $KEEPGOING == true ]] && (
|
||||||
|
prnt E "Les options --keep-going et --check-only sont incompatible !"
|
||||||
|
die 1 --force
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
if [[ $RESUME == true ]]; then
|
||||||
|
[[ $CHECK_ONLY == true ]] && (
|
||||||
|
prnt E "La reprise n'a pas de sens avec --check-only."
|
||||||
|
die 1 --force
|
||||||
|
)
|
||||||
|
[[ $MANUAL_MODULE_LIST ]] && (
|
||||||
|
prnt E "Le mode reprise ne fonctionne pas avec une liste de modules passé manuellement."
|
||||||
|
die 1 --force
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configure module list
|
||||||
|
if [[ $MANUAL_MODULE_LIST ]]; then
|
||||||
|
prnt W "Une liste de modules manuelle sera utilisé."
|
||||||
|
export MODULE_LIST=$(echo $MANUAL_MODULE_LIST | sed "s/,/ /g")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for module list existance en basic syntax
|
||||||
|
if [[ -n $MODULE_LIST ]]; then
|
||||||
|
if [[ $(echo $MODULE_LIST | grep '-') ]]; then
|
||||||
|
prnt E "Le tiret est interdit dans les noms de module."
|
||||||
|
die 5
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
prnt E "Aucun module à exécuter !"
|
||||||
|
die 5
|
||||||
|
fi
|
||||||
|
}
|
||||||
31
modules/create_vm.sh
Normal file
31
modules/create_vm.sh
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# create vm module
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# Variable:
|
||||||
|
# To be defined
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
export VER_create_vm="0.0.1"
|
||||||
|
|
||||||
|
create_vm()
|
||||||
|
{
|
||||||
|
if [[ WITH_VM != "yes" ]]; then
|
||||||
|
prnt I "Cette machine n'est pas configurée pour la virtualisation, rien à faire."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
pkginst virtualbox
|
||||||
|
# to be continued
|
||||||
|
}
|
||||||
|
|
||||||
|
precheck_create_vm()
|
||||||
|
{
|
||||||
|
if [[ $WITH_VM == "true" ]]; then
|
||||||
|
: #todo
|
||||||
|
else
|
||||||
|
prnt I "Aucune machine virtuelle à installer."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
export -f create_vm
|
||||||
|
export -f precheck_create_vm
|
||||||
Reference in New Issue
Block a user