171 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 |