2014-10-23 15:47:21 +04:00
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
2014-10-23 21:26:42 +04:00
urequire DEFAULTS template apache.tools
2016-08-18 17:01:49 +04:00
apacheconfig_initvars
2014-10-23 15:47:21 +04:00
function display_help() {
2015-10-29 12:43:19 +04:00
uecho "$scriptname: Gérer la configuration d'un serveur web apache
2014-10-23 15:47:21 +04:00
USAGE
2015-10-29 12:43:19 +04:00
$scriptname -c
$scriptname -t -- args...
2014-10-23 15:47:21 +04:00
OPTIONS
2015-10-29 12:43:19 +04:00
-c, --create
Créer un nouveau répertoire de configuration pour un hôte
-d, --destdir DESTDIR[=$TEMPLATECTL_NAME]
Nom du répertoire local de configuration.
-t, --template [OPT]
Gérer les fichiers du répertoire local avec templatectl. La valeur de
cette option est utilisée comme argument court pour l'invocation de
templatectl, e.g
$scriptname -tm args
est équivalent à
templatectl -m args
Les arguments qui restent sont passés tels quels à templatectl
Les options courantes de templatectl -l, -v, -m, -L sont disponibles
directement
2015-07-17 16:22:21 +04:00
--help-template
2015-10-29 12:43:19 +04:00
Afficher l'aide concernent la gestion des templates.
Equivalent à -t -- --help
-h, --host HOST
Spécifier l'hôte. Equivalent à -v host=HOST
--sysname SYSNAME
--sysdist SYSDIST
-s, --sysver SYSVER
Spécifier la distribution pour laquelle synchroniser le template. Par
défaut, choisir les valeurs correspondantes au système courant.
Les options -7 et -8 sont des aliases respectivement pour -s wheezy et
-s jessie, parce que les fichiers par défaut ont changé à partir de
debian jessie.
2015-07-17 16:22:21 +04:00
-u, --update, --deploy
Mettre à jour la configuration système à partir du répertoire local.
2015-10-29 12:43:19 +04:00
Lors du déploiement de la configuration, les valeurs des variables
2015-07-17 16:22:21 +04:00
dynamiques sont remplacées dans les fichiers destination.
2015-10-29 12:43:19 +04:00
Les arguments qui restent sont passés tels quels à apache_autoconf
2015-07-17 16:22:21 +04:00
-r, --certsdir CERTSDIR
Spécifier le cas échéant le répertoire contenant les certificats à
2015-12-07 04:43:46 +04:00
déployer. Cet argument est requis si le répertoire certsconf/ existe.
--localhosts
Créer dans le fichier /etc/hosts tous les noms d'hôte ayant un suffixe
.local mentionnés dans les fichiers de site. Cette option est utile pour
2015-12-07 11:14:29 +04:00
le développement et les tests.
-C, --one-conf CONF
Ne déployer que le fichier de configuration spécifié. Cette option est
utilisée avec --deploy et est utile pour le développement et les tests.
-M, --one-module MODULE
Ne déployer que le fichier de module spécifié. Cette option est utilisée
avec --deploy et est utile pour le développement et les tests.
-S, --one-site SITE
Ne déployer que le fichier de site spécifié. Cette option est utilisée
avec --deploy ou --localhosts et est utile pour le développement et les
tests."
2015-07-17 16:22:21 +04:00
}
2015-10-29 12:43:19 +04:00
action=
destdir=
2015-10-30 21:46:49 +04:00
nohideconfig=
2015-10-29 12:43:19 +04:00
templateopt=
2015-11-02 10:59:48 +04:00
aac_certsdir=
2015-12-24 09:58:09 +04:00
bits=
2015-12-07 04:43:46 +04:00
oneconf=
onemodule=
onesite=
2015-10-29 12:43:19 +04:00
args=(
--help '$exit_with display_help'
-c,--create action=create
-d:,--destdir: destdir=
2015-10-30 21:46:49 +04:00
--no-hideconfig nohideconfig=1
--hideconfig nohideconfig=
2015-10-29 12:43:19 +04:00
-t::,--template:: '$set@ templateopt; action=template'
--help-template '$templateopt=-help; action=template'
-l,--list '$templateopt=l; action=template'
-v:,--var: TEMPLATECTL_VARS
-m,--merge '$templateopt=m; action=template'
-L,--list-vars '$templateopt=L; action=template'
-h:,--host: '$array_add TEMPLATECTL_VARS host="$value_"'
--sysname: '$array_add TEMPLATECTL_VARS sysname="$value_"'
--sysdist: '$array_add TEMPLATECTL_VARS sysdist="$value_"'
-s:,--sysver: '$array_add TEMPLATECTL_VARS sysver="$value_"'
-6,--squeeze '$array_add TEMPLATECTL_VARS sysver=squeeze'
-7,--wheezy '$array_add TEMPLATECTL_VARS sysver=wheezy'
-8,--jessie '$array_add TEMPLATECTL_VARS sysver=jessie'
2015-12-24 09:58:09 +04:00
--bits: bits=
2015-10-29 12:43:19 +04:00
-u,--update,--deploy action=deploy
2015-11-02 10:59:48 +04:00
-r:,--certsdir: aac_certsdir=
2015-12-07 04:43:46 +04:00
--localhosts action=localhosts
2015-12-07 11:14:29 +04:00
-C:,--one-conf: oneconf=
-M:,--one-module: onemodule=
-S:,--one-site: onesite=
2014-10-23 15:47:21 +04:00
)
2015-10-29 12:43:19 +04:00
parse_args "$@"; set -- "${args[@]}"
2016-08-18 17:01:49 +04:00
apacheconfig_loadconf "$destdir" || die
apacheconfig_sysinfos "$sysname" "$sysdist" "$sysver" "$bits"
2014-10-24 00:34:53 +04:00
2015-10-29 12:43:19 +04:00
################################################################################
if [ "$action" == create ]; then
if [ -n "$autocreate" -a ! -d "$destdir" ]; then
estepn "Création automatique de $(ppath "$destdir")"
mkdir -p "$destdir" || die
2014-11-29 22:11:51 +04:00
fi
2015-10-29 12:43:19 +04:00
[ -d "$destdir" ] || die "$destdir: répertoire introuvable"
2014-10-24 00:34:53 +04:00
2015-11-02 10:59:48 +04:00
[ -n "$host" ] || host="$1"
2015-10-30 21:46:49 +04:00
if [ -n "$host" ]; then
read_value -i "Veuillez entrer le nom d'hôte" host "$host"
else
check_interaction -c && einfo "Vous pouvez entrer un nom d'hôte spécifique pour la nouvelle configuration, ou laisser la valeur par défaut @@dhost@@ pour qu'il soit calculé dynamiquement lors du déploiement"
read_value "Veuillez entrer le nom d'hôte" host @@dhost@@
fi
__template_set_var host "$host"
2015-10-29 12:43:19 +04:00
if [ -f "$config" ]; then
2015-10-30 21:46:49 +04:00
ask_yesno "Le fichier $(ppath "$config") sera écrasé. Voulez-vous continuer?" O || die
2015-10-29 12:43:19 +04:00
rm -f "$config" || die
2014-10-23 15:47:21 +04:00
fi
2015-10-30 21:46:49 +04:00
templatectl -d "$destdir" --config "$config" --no-load-vars -m --write-vars
2015-10-29 12:43:19 +04:00
################################################################################
elif [ "$action" == template ]; then
__TEMPLATECTL_HELP="USAGE: $scriptname -t -- args...
$__TEMPLATECTL_HELP"
2015-10-30 21:46:49 +04:00
templatectl -d "$destdir" --config "$config" --no-load-vars ${templateopt:+-$templateopt} "$@"
2015-10-29 12:43:19 +04:00
################################################################################
2015-12-07 04:43:46 +04:00
elif [ "$action" == deploy -o "$action" == localhosts ]; then
2015-10-29 12:43:19 +04:00
[ -d "$destdir" ] || die "$destdir: répertoire introuvable"
2014-10-23 15:47:21 +04:00
2015-12-07 04:43:46 +04:00
args=(
-d "$destdir" --$action ${aac_certsdir:+-r "$aac_certsdir"}
${oneconf:+--one-conf "$oneconf"}
${onemodule:+--one-module "$onemodule"}
${onesite:+--one-site "$onesite"}
)
2016-03-08 11:51:46 +04:00
# sur une ligne séparée parce que $bits peut être vide
[ -n "$custom_sysinfos" ] && array_add args --sysname "$sysname" --sysdist "$sysdist" --sysver "$sysver" --bits "$bits"
2015-10-29 12:43:19 +04:00
for __name in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
2014-11-29 23:02:48 +04:00
array_add args -v "$__name=${!__name}"
done
2015-10-29 12:43:19 +04:00
array_add args -- "$@"
2014-10-23 15:47:21 +04:00
run_as_root "${args[@]}"
2015-12-07 04:43:46 +04:00
if [ "$action" == deploy ]; then
etitle "Mise à jour du système"
2016-08-18 17:01:49 +04:00
apacheconfig_deploy \
"$destdir" "$aac_certsdir" \
"$config" "$oneconf" "$onemodule" "$onesite" \
"$custom_sysinfos" "$sysname" "$sysdist" "$sysver" "$bits" || die
eend
2015-12-07 04:43:46 +04:00
elif [ "$action" == localhosts ]; then
etitle "Mise à jour de /etc/hosts"
2016-08-18 17:01:49 +04:00
apacheconfig_deploy_localhosts "$destdir" "$aac_certsdir" "$onesite" || die
eend
2015-12-07 04:43:46 +04:00
fi
2014-10-23 15:47:21 +04:00
fi