#!/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 urequire DEFAULTS template apache.tools apacheconfig_initvars function display_help() { uecho "$scriptname: Gérer la configuration d'un serveur web apache USAGE $scriptname -c $scriptname -t -- args... OPTIONS -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 --help-template 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. -u, --update, --deploy Mettre à jour la configuration système à partir du répertoire local. Lors du déploiement de la configuration, les valeurs des variables dynamiques sont remplacées dans les fichiers destination. Les arguments qui restent sont passés tels quels à apache_autoconf -r, --certsdir CERTSDIR Spécifier le cas échéant le répertoire contenant les certificats à 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 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." } action= destdir= nohideconfig= templateopt= aac_certsdir= bits= oneconf= onemodule= onesite= args=( --help '$exit_with display_help' -c,--create action=create -d:,--destdir: destdir= --no-hideconfig nohideconfig=1 --hideconfig nohideconfig= -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' --bits: bits= -u,--update,--deploy action=deploy -r:,--certsdir: aac_certsdir= --localhosts action=localhosts -C:,--one-conf: oneconf= -M:,--one-module: onemodule= -S:,--one-site: onesite= ) parse_args "$@"; set -- "${args[@]}" apacheconfig_loadconf "$destdir" || die apacheconfig_sysinfos "$sysname" "$sysdist" "$sysver" "$bits" ################################################################################ if [ "$action" == create ]; then if [ -n "$autocreate" -a ! -d "$destdir" ]; then estepn "Création automatique de $(ppath "$destdir")" mkdir -p "$destdir" || die fi [ -d "$destdir" ] || die "$destdir: répertoire introuvable" [ -n "$host" ] || host="$1" 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" if [ -f "$config" ]; then ask_yesno "Le fichier $(ppath "$config") sera écrasé. Voulez-vous continuer?" O || die rm -f "$config" || die fi templatectl -d "$destdir" --config "$config" --no-load-vars -m --write-vars ################################################################################ elif [ "$action" == template ]; then __TEMPLATECTL_HELP="USAGE: $scriptname -t -- args... $__TEMPLATECTL_HELP" templatectl -d "$destdir" --config "$config" --no-load-vars ${templateopt:+-$templateopt} "$@" ################################################################################ elif [ "$action" == deploy -o "$action" == localhosts ]; then [ -d "$destdir" ] || die "$destdir: répertoire introuvable" args=( -d "$destdir" --$action ${aac_certsdir:+-r "$aac_certsdir"} ${oneconf:+--one-conf "$oneconf"} ${onemodule:+--one-module "$onemodule"} ${onesite:+--one-site "$onesite"} ) # 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" for __name in "${TEMPLATE_DYNAMIC_VARS[@]}"; do array_add args -v "$__name=${!__name}" done array_add args -- "$@" run_as_root "${args[@]}" if [ "$action" == deploy ]; then etitle "Mise à jour du système" apacheconfig_deploy \ "$destdir" "$aac_certsdir" \ "$config" "$oneconf" "$onemodule" "$onesite" \ "$custom_sysinfos" "$sysname" "$sysdist" "$sysver" "$bits" || die eend elif [ "$action" == localhosts ]; then etitle "Mise à jour de /etc/hosts" apacheconfig_deploy_localhosts "$destdir" "$aac_certsdir" "$onesite" || die eend fi fi