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
|
Afficher les différences entre les templates et les fichiers du
|
||||||
répertoire local.
|
répertoire local.
|
||||||
--list-vars
|
--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
|
--write-vars
|
||||||
Forcer l'écriture des valeurs actuelles des variables dans le fichier
|
Ecrire dans le fichier .apacheconfig les valeurs par défaut des
|
||||||
.apacheconfig, ce qui permet d'éviter de les spécifier à chaque fois
|
variables, ce qui permet après édition du fichier d'éviter de les
|
||||||
avec l'option -v
|
spécifier à chaque fois avec l'option -v
|
||||||
|
Le fichier n'est pas écrasé s'il existe déjà.
|
||||||
-v, --var NAME=VALUE
|
-v, --var NAME=VALUE
|
||||||
Spécifier la valeur d'une variable. Il est possible de spécifier des
|
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
|
Le répertoire local peut contenir les fichiers et répertoires suivants, qui sont
|
||||||
tous optionnels:
|
tous optionnels:
|
||||||
|
@ -80,6 +90,8 @@ IMPORTANT: les fonctions de déploiement ne sont pour le moment supportées que
|
||||||
sur debian
|
sur debian
|
||||||
-u, --update, --deploy
|
-u, --update, --deploy
|
||||||
Mettre à jour la configuration système à partir du répertoire local.
|
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
|
-r, --certsdir CERTSDIR
|
||||||
Spécifier le cas échéant le répertoire contenant les certificats à
|
Spécifier le cas échéant le répertoire contenant les certificats à
|
||||||
déployer.
|
déployer.
|
||||||
|
@ -114,13 +126,28 @@ OPTIONS AVANCEES
|
||||||
}
|
}
|
||||||
function __templatectl_display_help() { display_help; }
|
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() {
|
function parent_apacheconfig() {
|
||||||
# chercher à partir du répertoire courant si un des répertoires parents
|
# chercher à partir du répertoire courant si un des répertoires parents
|
||||||
# s'appelle apacheconfig
|
# s'appelle apacheconfig
|
||||||
local dir="$(pwd)" dirname
|
local dir="$(pwd)" dirname
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
dirname="$(basename "$dir")"
|
dirname="$(basename -- "$dir")"
|
||||||
if [ "$dir" == / ]; then
|
if [ "$dir" == / ]; then
|
||||||
# s'arrêter à la racine
|
# s'arrêter à la racine
|
||||||
return 1
|
return 1
|
||||||
|
@ -135,24 +162,14 @@ function parent_apacheconfig() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
setx host=myhost
|
TEMPLATE_VARS=()
|
||||||
setx hostname=myhostname
|
DYNAMIC_VARS=()
|
||||||
aliases="$hostname"
|
function update_var() {
|
||||||
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() {
|
|
||||||
# mettre à jour la valeur d'une variable en tenant compte de certaines
|
# mettre à jour la valeur d'une variable en tenant compte de certaines
|
||||||
# dépendances. par exemple, si on modifie host, il faut mettre à jour
|
# dépendances. par exemple, si on modifie host, il faut mettre à jour
|
||||||
# hostname.
|
# hostname.
|
||||||
local __orig_value="${!1}"
|
local __orig_value="${!1}"
|
||||||
array_addu TEMPLATE_VARS "$1"
|
array_contains DYNAMIC_VARS "$1" || array_addu TEMPLATE_VARS "$1"
|
||||||
setv "$1" "$2"
|
setv "$1" "$2"
|
||||||
|
|
||||||
local __update_aliases
|
local __update_aliases
|
||||||
|
@ -199,9 +216,10 @@ __TEMPLATECTL_SUPPLOPTS=(
|
||||||
__templatectl_parseopts "$@" && \
|
__templatectl_parseopts "$@" && \
|
||||||
set -- "${args[@]}" || die "$args"
|
set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
# répertoire source
|
# répertoire de template
|
||||||
setx __templatectl_srcdir=templatesrc apacheconfig
|
setx __templatectl_srcdir=templatesrc apacheconfig
|
||||||
# répertoire de référence
|
|
||||||
|
# répertoire local
|
||||||
__autocreate=
|
__autocreate=
|
||||||
if [ -z "$__templatectl_destdir" ]; then
|
if [ -z "$__templatectl_destdir" ]; then
|
||||||
if [ -d apacheconfig ]; then
|
if [ -d apacheconfig ]; then
|
||||||
|
@ -215,39 +233,66 @@ if [ -z "$__templatectl_destdir" ]; then
|
||||||
__autocreate=1
|
__autocreate=1
|
||||||
fi
|
fi
|
||||||
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"
|
__apacheconfig_vars="$__templatectl_destdir/.apacheconfig"
|
||||||
if [ -f "$__apacheconfig_vars" ]; then
|
# d'abord charger __template_vars
|
||||||
source "$__apacheconfig_vars"
|
[ -f "$__apacheconfig_vars" ] && source "$__apacheconfig_vars"
|
||||||
for __var in "${__apacheconfig[@]}"; do
|
for __var in "${__template_vars[@]}"; do
|
||||||
splitvar "$__var" __name __value
|
splitvar "$__var" __name __value
|
||||||
update_template_var "$__name" "$__value"
|
update_var "$__name" "$__value"
|
||||||
done
|
done
|
||||||
fi
|
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
|
# mettre à jour les variables
|
||||||
__modified=
|
__modified=
|
||||||
for __var in "${__vars[@]}"; do
|
for __var in "${__vars[@]}"; do
|
||||||
splitvar "$__var" __name __value
|
splitvar "$__var" __name __value
|
||||||
update_template_var "$__name" "$__value" && __modified=1
|
update_var "$__name" "$__value" && __modified=1
|
||||||
done
|
done
|
||||||
|
|
||||||
# enregistrer les valeurs des variables
|
# 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"
|
>"$__apacheconfig_vars"
|
||||||
echo "__apacheconfig=(" >>"$__apacheconfig_vars"
|
echo "__template_vars=(" >>"$__apacheconfig_vars"
|
||||||
for __var in "${TEMPLATE_VARS[@]}"; do
|
for __var in "${TEMPLATE_VARS[@]}"; do
|
||||||
echo_setv "$__var=${!__var}" >>"$__apacheconfig_vars"
|
echo_setv "$__var=${!__var}" >>"$__apacheconfig_vars"
|
||||||
done
|
done
|
||||||
echo ")" >>"$__apacheconfig_vars"
|
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
|
fi
|
||||||
|
|
||||||
# afficher les variables
|
# afficher les variables
|
||||||
if [ -n "$__list_vars" ]; then
|
if [ -n "$__list_vars" ]; then
|
||||||
|
echo "# template vars"
|
||||||
for __var in "${TEMPLATE_VARS[@]}"; do
|
for __var in "${TEMPLATE_VARS[@]}"; do
|
||||||
echo_setv "$__var=${!__var}"
|
echo_setv "$__var=${!__var}"
|
||||||
done
|
done
|
||||||
|
if [ ${#DYNAMIC_VARS[*]} -gt 0 ]; then
|
||||||
|
echo "# dynamic vars"
|
||||||
|
for __var in "${DYNAMIC_VARS[@]}"; do
|
||||||
|
echo_setv "$__var=${!__var}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Gérer les templates et fichiers locaux
|
# Gérer les templates et fichiers locaux
|
||||||
|
|
Loading…
Reference in New Issue