support de la saisie des variables dynamiques
This commit is contained in:
parent
1982afd229
commit
05bebad535
111
apacheconfig
111
apacheconfig
|
@ -31,14 +31,24 @@ répertoire de référence appelé répertoire local, avant son déploiement.
|
|||
Afficher les différences entre les templates et les fichiers du
|
||||
répertoire local.
|
||||
--list-vars
|
||||
Afficher la valeur par défaut des variables prédéfinies
|
||||
Afficher pour information les valeurs par défaut des variables de
|
||||
template.
|
||||
--write-vars
|
||||
Forcer l'écriture des valeurs actuelles des variables dans le fichier
|
||||
.apacheconfig, ce qui permet d'éviter de les spécifier à chaque fois
|
||||
avec l'option -v
|
||||
Ecrire dans le fichier .apacheconfig les valeurs par défaut des
|
||||
variables, ce qui permet après édition du fichier d'éviter de les
|
||||
spécifier à chaque fois avec l'option -v
|
||||
Le fichier n'est pas écrasé s'il existe déjà.
|
||||
-v, --var NAME=VALUE
|
||||
Spécifier la valeur d'une variable. Il est possible de spécifier des
|
||||
valeurs qui ne sont pas dans la liste prédéfinie.
|
||||
valeurs qui ne sont pas dans la liste prédéfinie. Par défaut, il s'agit
|
||||
d'une variable de template, utilisée pour mettre à jour la copie locale
|
||||
d'un template avec l'option --merge
|
||||
Dans le fichier .apacheconfig, les valeurs des variables de template
|
||||
n'est pas censée changer. Lors de la copie des templates avec l'option
|
||||
--merge, chaque occurence de @@VAR@@ dans un template est remplacée dans
|
||||
la copie locale par la valeur de la variable de template VAR
|
||||
Les variables dynamiques sont remplacées lors du déploiement du fichier
|
||||
avec l'option --update
|
||||
|
||||
Le répertoire local peut contenir les fichiers et répertoires suivants, qui sont
|
||||
tous optionnels:
|
||||
|
@ -80,6 +90,8 @@ IMPORTANT: les fonctions de déploiement ne sont pour le moment supportées que
|
|||
sur debian
|
||||
-u, --update, --deploy
|
||||
Mettre à jour la configuration système à partir du répertoire local.
|
||||
Lors du déploiement de la configuration, les valeurs de variables
|
||||
dynamiques sont remplacées dans les fichiers destination.
|
||||
-r, --certsdir CERTSDIR
|
||||
Spécifier le cas échéant le répertoire contenant les certificats à
|
||||
déployer.
|
||||
|
@ -114,13 +126,28 @@ OPTIONS AVANCEES
|
|||
}
|
||||
function __templatectl_display_help() { display_help; }
|
||||
|
||||
# Valeurs par défaut des variables de template
|
||||
setx host=myhost
|
||||
hostname="${host%%.*}"
|
||||
DEFAULT_TEMPLATE_VARS=(
|
||||
host="$host"
|
||||
hostname="$hostname"
|
||||
aliases="$hostname"
|
||||
admin=supervision-gdrsi@listes.univ-reunion.fr
|
||||
certsdir=renater
|
||||
caname=terena.crt
|
||||
certname=
|
||||
keyname=
|
||||
#configdir= # défini ci-dessous
|
||||
)
|
||||
|
||||
function parent_apacheconfig() {
|
||||
# chercher à partir du répertoire courant si un des répertoires parents
|
||||
# s'appelle apacheconfig
|
||||
local dir="$(pwd)" dirname
|
||||
|
||||
while true; do
|
||||
dirname="$(basename "$dir")"
|
||||
dirname="$(basename -- "$dir")"
|
||||
if [ "$dir" == / ]; then
|
||||
# s'arrêter à la racine
|
||||
return 1
|
||||
|
@ -135,24 +162,14 @@ function parent_apacheconfig() {
|
|||
done
|
||||
}
|
||||
|
||||
setx host=myhost
|
||||
setx hostname=myhostname
|
||||
aliases="$hostname"
|
||||
admin=supervision-gdrsi@listes.univ-reunion.fr
|
||||
certsdir=renater
|
||||
caname=terena.crt
|
||||
certname=
|
||||
keyname=
|
||||
TEMPLATE_VARS=(
|
||||
host hostname aliases admin
|
||||
certsdir caname certname keyname
|
||||
)
|
||||
function update_template_var() {
|
||||
TEMPLATE_VARS=()
|
||||
DYNAMIC_VARS=()
|
||||
function update_var() {
|
||||
# mettre à jour la valeur d'une variable en tenant compte de certaines
|
||||
# dépendances. par exemple, si on modifie host, il faut mettre à jour
|
||||
# hostname.
|
||||
local __orig_value="${!1}"
|
||||
array_addu TEMPLATE_VARS "$1"
|
||||
array_contains DYNAMIC_VARS "$1" || array_addu TEMPLATE_VARS "$1"
|
||||
setv "$1" "$2"
|
||||
|
||||
local __update_aliases
|
||||
|
@ -199,9 +216,10 @@ __TEMPLATECTL_SUPPLOPTS=(
|
|||
__templatectl_parseopts "$@" && \
|
||||
set -- "${args[@]}" || die "$args"
|
||||
|
||||
# répertoire source
|
||||
# répertoire de template
|
||||
setx __templatectl_srcdir=templatesrc apacheconfig
|
||||
# répertoire de référence
|
||||
|
||||
# répertoire local
|
||||
__autocreate=
|
||||
if [ -z "$__templatectl_destdir" ]; then
|
||||
if [ -d apacheconfig ]; then
|
||||
|
@ -215,39 +233,66 @@ if [ -z "$__templatectl_destdir" ]; then
|
|||
__autocreate=1
|
||||
fi
|
||||
fi
|
||||
setx __templatectl_destdir=abspath "$__templatectl_destdir"
|
||||
|
||||
# charger les variables
|
||||
# charger les variables. important: la liste des variables définie dans le
|
||||
# fichier .apacheconfig prend la précédence sur la liste définie par défaut
|
||||
__template_vars=("${DEFAULT_TEMPLATE_VARS[@]}")
|
||||
__dynamic_vars=()
|
||||
__apacheconfig_vars="$__templatectl_destdir/.apacheconfig"
|
||||
if [ -f "$__apacheconfig_vars" ]; then
|
||||
source "$__apacheconfig_vars"
|
||||
for __var in "${__apacheconfig[@]}"; do
|
||||
splitvar "$__var" __name __value
|
||||
update_template_var "$__name" "$__value"
|
||||
done
|
||||
fi
|
||||
# d'abord charger __template_vars
|
||||
[ -f "$__apacheconfig_vars" ] && source "$__apacheconfig_vars"
|
||||
for __var in "${__template_vars[@]}"; do
|
||||
splitvar "$__var" __name __value
|
||||
update_var "$__name" "$__value"
|
||||
done
|
||||
array_contains TEMPLATE_VARS configdir || update_var configdir "$__templatectl_destdir"
|
||||
# puis charger __dynamic_vars
|
||||
[ -f "$__apacheconfig_vars" ] && source "$__apacheconfig_vars"
|
||||
for __var in "${__dynamic_vars[@]}"; do
|
||||
splitvar "$__var" __name __value
|
||||
array_del TEMPLATE_VARS "$__name"
|
||||
array_addu DYNAMIC_VARS "$__name"
|
||||
update_var "$__name" "$__value"
|
||||
done
|
||||
|
||||
# mettre à jour les variables
|
||||
__modified=
|
||||
for __var in "${__vars[@]}"; do
|
||||
splitvar "$__var" __name __value
|
||||
update_template_var "$__name" "$__value" && __modified=1
|
||||
update_var "$__name" "$__value" && __modified=1
|
||||
done
|
||||
|
||||
# enregistrer les valeurs des variables
|
||||
if [ -n "$__modified" -o "$__write_vars" ]; then
|
||||
if [ -n "$__write_vars" ]; then
|
||||
[ -f "$__apacheconfig_vars" ] &&
|
||||
die "Refus d'écraser le fichier existant $(ppath "$__apacheconfig_vars")"
|
||||
|
||||
>"$__apacheconfig_vars"
|
||||
echo "__apacheconfig=(" >>"$__apacheconfig_vars"
|
||||
echo "__template_vars=(" >>"$__apacheconfig_vars"
|
||||
for __var in "${TEMPLATE_VARS[@]}"; do
|
||||
echo_setv "$__var=${!__var}" >>"$__apacheconfig_vars"
|
||||
done
|
||||
echo ")" >>"$__apacheconfig_vars"
|
||||
echo "__dynamic_vars=(" >>"$__apacheconfig_vars"
|
||||
for __var in "${DYNAMIC_VARS[@]}"; do
|
||||
echo_setv "$__var=${!__var}" >>"$__apacheconfig_vars"
|
||||
done
|
||||
echo ")" >>"$__apacheconfig_vars"
|
||||
fi
|
||||
|
||||
# afficher les variables
|
||||
if [ -n "$__list_vars" ]; then
|
||||
echo "# template vars"
|
||||
for __var in "${TEMPLATE_VARS[@]}"; do
|
||||
echo_setv "$__var=${!__var}"
|
||||
done
|
||||
if [ ${#DYNAMIC_VARS[*]} -gt 0 ]; then
|
||||
echo "# dynamic vars"
|
||||
for __var in "${DYNAMIC_VARS[@]}"; do
|
||||
echo_setv "$__var=${!__var}"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
# Gérer les templates et fichiers locaux
|
||||
|
|
Loading…
Reference in New Issue